Provide a base client type that can then be used for loading
scoped items (like basis, project, etc). Allow per-run setup
of server and runner be handled by the client. Add project
loading and project detection support to basis implementation
and load vagrantfiles during client setup.
This also updates the Ruby runtime usage to pass the ClientProtocol
instead of the full client since after init we only need it for
dispensing plugins.