[WIP] STI foreman provider

This creates the models to be used for creating the foreman configuration provider.



This feels like it needs a lot more.
Did I miss anything?
/cc @gmcculloug @brandondunne 
So, @kbrock, the issue is ipv6 literal addresses need to be wrapped in [] in URIs.

I'd suggest we do something like this when building URIs:
* Build a URI using uri = URI::Generic.build(:scheme => "http", :port => port, :path => path) or URI::HTTP.build, etc.
* Then use uri.hostname = host, to set the host.  This will deal with ipv6 addresses automatically.
* Note: we can pass :host => host in the hash to URI::Generic.build and it will do the ipv6 magic for us when this PR lands in a released ruby that we are using: https://github.com/ruby/ruby/pull/765
* We then pass around URIs everywhere.

From https://github.com/excon/excon/pull/449:
Then, if everyone uses URIs, the rules are pretty simple:

* URI#host for places that require the [::1] notation (such as the Host request header value) (httpclient, excon, rest-client, net/http)
* URI#hostname for places that require ::1, such as Socket.new (should only be in low level libraries such as httpclient, net/http, excon)
* URI#to_s for full URLs (anywhere)

See also:
https://github.com/ManageIQ/manageiq/pull/1080
https://github.com/ManageIQ/ovirt/commit/75211f6dc69d6d86c4a8ce019ab6a0bf913e4305
https://github.com/rest-client/rest-client/pull/332
https://github.com/rest-client/rest-client/pull/333