Each machine and provider backing should be represented by only one machine.
This will eventually replace the Environment#vms method. Because of the introduction of providers, the environment doesn't know what the backing of the machines will be (and they're _machines_ now, not _vms_). Instead, users of Environment will now call `#machine` on the environment to retrieve a machine with the given backing provider as it needs it.
This is done by calling the `upgrade` method on the _old_ configuration classes. The old configuration classes are given the complete new configuration and can set whatever settings they need to on it.
This is to prepare for the upcoming V2 configuration. When we're in V2, we only want to load _upgradable_ configuration keys.
These are classes that use NO core classes of Vagrant, and are therefore safe to load for upgrades. i.e. a V2 core can load a V1 config class that is deemed upgrade safe without crashing Vagrant.
Before we were manually going over every plugin and getting each piece, all over the place. Now we have a central manager that will give us all the pieces we want. There is still some cleanup to do here but this is much better overall.
It was only used in a couple places and it isn't necessary since you can do the loading within the actual blocks themselves.
Fix change_host_name on Ubuntu Hardy
Additional Arch host class fixes
Omit empty lines in Puppet provisioner output
The sudo() block and/or the Puppet provisioner often returns newline characters as separate strings. This makes the chomp() ineffective and results in extraneous spacing between the output lines. Separate out the call to chomp() so that we only do it once. Then only output info if that line is not an empty string.
Using `which systemctl` would return true on even non-systemd machines during this transitional time.