WIP: (PUP-1072) accept HTTP URLs as file source and retrieve file data via HTTP

Opening for early review.

I would have liked to add new indirector termini, but there are issues. During the very creation of the indirector [request](https://github.com/puppetlabs/puppet/blob/master/lib/puppet/indirector/request.rb#L77-86), URLs get special treatment. The indirector assumes that they are in a format that complies with the REST API.

While it would certainly be possible to teach the indirector to accept these file URLs as is, it would add complexity that is currently required for only this one obscure use case. I don't think we should. 
@cprice404 this is my approach to escaping the URLs for the benefit of the indirector. It's inelegant, but quite effective.
Looking forward to any improved approach from your drawer :)