Refactor

This refactors the new code I added previously which had issues getting the correct device name sometimes.  The reason for this is because node attributes used in resources are read in during compile time and new values aren't used during that run if a previous resource changed the attribute's value.  I've added a dependency on the delayed_evaluator cookbook which introduces the 'lazy' method.  Using a 'lazy' block will allow the resource to use the most current value of the attribute.
This 'lazy' feature has been approved to be included in Chef and will be in the [next release.](http://tickets.opscode.com/browse/CHEF-3731)
Once the new version of Chef is released, we can either remove the dependency on delayed_evaluator and note the requirement of the newest version of Chef, or add a conditional block to check the version of Chef.

John