Split drivers into individual classes

By way of a point of discussion, I've broken out individual drivers into their own classes. This cleans up a lot of pretty epic switches, but I've mostly done it so I can eventually add ohai hints into the correct classes automatically. 
This commit also adds a very tiny amount of rspec.
If we're going to follow the pattern of the driver_init, we should probably follow the naming too, for predictability's sake--can you rename `providers` to `provider_init`?

This is interesting, as it allows someone to make a chef-metal-fog-blah driver.  I like :)