(PUP-1151) Move HTTP Errors to own module

They aren't really part of the handler, and many more areas of HTTP
processing are referring to them.
(PUP-1151) Authorize v2 api requests

This commit does several things, all in order to make authorizing API V2
requests a bit easier:

  * Renames /v2 to /v2.0, which was chosen because it doesn't conflict
    with a legal environment name in the V1 API.
  * Adds route chaining so that a handler can deal with a request
    prefixed with /v2.0 and then continue on to another route
  * Changes how calls to authorization are handled so that full paths
    are checked rather than indirection/key pairs.
  * Introduces an authorization step in the /v2.0 request chain. This is
    currently limited to only handle GET requests (seen as find in
    auth.conf).
(PUP-1151) Hard code return of only production environment

This plumbs in the first step and getting the list of environments
returned. At the moment it is hard coded to only ever return the
prodution environment.
(PUP-1151) Inject source of environments

This pulls out the source of the environments from the V2::Environments
code and instead injects it from a "provide"d handler. The "provide"
method on V2 allows a handler to be constructed lazily, which is needed
when it needs to be instantiated with information that isn't known until
request time (in this case the source of the environments).
(PUP-1151) Add access to environments in auth.conf

The default auth.conf that we send out with puppet also needs to include
the default policy.
(PUP-1151) Ensure that json is installed for tests

With the introduction of the new v2.0 api using JSON we need to make
sure that all of our test platforms have JSON installed. Some already
have it (because we only support 1.9 on windows), others have to have it
installed.
Merge pull request #2258 from zaphod42/feature/master/pup-1151-environment-enumeration

(PUP-1151) List environments