Fix problem that Puppet module-paths were re-ordered by Vagrant.

Puppet module-path were re-ordered by Vagrant due to the use of a
hash. This could lead to unpredictable results.
Explicitly tell ssh server we're done sending data
Merge pull request #968 from mxtthias/ssh-command-eof

Explicitly tell ssh server we're done sending data
Merge pull request #964 from jbraeuer/puppet-modulepath-fix

Fix problem that Puppet module-paths were re-ordered by Vagrant.
Update CHANGELOG
Allow the .vagrant dotfile to be moved into a completely different directory tree

I wanted to define my dotfile as: `config.vagrant.dotfile_name =
"~/.vagrant-projectname"` and noticed that the full path wasn't
expanded as expected.

This patch allows the vagrant file to be placed anywhere on the
filesystem.
Merge pull request #973 from mattrobenolt/expand-dotpath

Allow the .vagrant dotfile to be moved into a completely different directory tree
Update drivers to support reading MAC Addresses
Remove dependence on V1 Kernel from Environment
Renamespace Kernel to Kernel_V1
Fixes minor typo
Merge pull request #987 from videlalvaro/patch-1

Fixes minor typo
Don't use Pathname#each_child for 1.8.7 compat [GH-979]

each_child is a 1.9.x feature. The implementation however is simple
enough that I copied it over and just use the 1.8.7 compatible version.
FreeBSD guest network config upload must be a file.
Check for permission denied when using SCP to upload [GH-924]
Convert the path to a string because it may be a Pathname
Use `next` instead of `return` for 1.8.x compatibility.

Since we're not calling this lambda from inside a method, the `return`
causes a LocalJumpError on 1.8.x. It appears this functionality works
fine on 1.9.x but we'd like to support both. The correct behavior
appears to use `next`.
Separate out the versions the config loader knows as init params.

This means that the Config::Loader now only knows how to load
configuration for versions used to initialize the class. This lets
things like the tests be completely isolated from what the actual
configuration is for Vagrant. This will be immensely useful to verify
that the loader functionality works for non-trivial bits (like
upgrading) without depending on Vagrant's upgrading functionality.
Config loader no longer assumes latest version for procs.

Previously, all procs were assumed to just be the current version. This
is certainly not going to be true always so now the version number of
the configuration must be explicit if you're assigning a proc to the
configuration loader.
Configuration versions can finalize config after loading

This is useful so that it can take a look at the final loaded
configuration object and possibly make some tweaks to the configuration
object. The use case this was built for was so that config V1 can verify
that there is always at least a single VM defined as a sub-VM, the
"default" VM.