(PUP-3644) Add environments endpoint to v3

This commit adds a copy of the environments endpoint to the v3
routes.  It includes a bit of refactoring (e.g. creating a new
class `V3::IndirectedRoutes` to contain the logic for all of the
routes that come from the indirector) in order to keep the code
for the newer style routes separate from the code for the indirector
routes.
(PUP-3644) Change ordering of checking

So that we fail first if we can't find the indirection, then if there's a missing environment.