Extract Vagrant provider processing logic

This change extracts the provider processing logic to a separate method
which can be invoked from a subtype, providing a custom provider.
Merge pull request #1597 from petrhosek/enable-custom-vagrant-providers

Extract Vagrant provider processing logic to a method