(PUP-3642) Remove environment name from URL path

    This commit makes some changes to the indirector network layer
    such that the environment name is no longer a part of the main
    URL path structure.  Instead, the environment becomes a query
    parameter for GET requests, or part of the form body for POST
    requests.  This will allow us to have a more finite URL space
    and run Puppet in the same webserver with other apps, without
    worrying about URL collisions.
With this PR, any indirector model objects that are used during a :save request must have an `environment` getter method.  I would like to enforce this by creating an abstract method in the parent class, which throws a meaningful exception if a model class doesn't define this method.  However, I can't figure out where that would go or if it's possible.  It seems like it should go here:

https://github.com/puppetlabs/puppet/blob/cb4ad1f19b043a70ba17e4103a25f5c97a76948b/lib/puppet/indirector.rb#L52-L54

But I tried that and it didn't work.  I haven't yet been able to decipher all of the metaprogramming magic to figure out whether there's somewhere else I could achieve this.