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.
How about detected_ssh_username or default_ssh_username, to point out that this will only be used if the user doesn't specify it?