(PUP-3642) Move environment into indirector model for :save requests

Prior to this commit, we were falling back to the 'production'
environment for all `:save` indirector requests, because we didn't
have an easy way of getting the environment out of the request
payload.

This commit changes the logic such that all indirector model objects
that can have `:save` called on them are now expected to provide
an `environment` getter method that returns the environment, presumably
deserialized from the request body.

In order to achieve this, the commit changes the implementation of
the `uri2indirection` method so that, in the case of `:save` requests,
we read the body into the model object a little earlier than we
would have in the old implementation, and we pass it along in the
params map so that it is still accessible when the `do_save` method
is called a little later on.