Release tools path 2

This is a second attempt at add capability for the tools to be stored in a directory named after the stream. The first attempt was reverted because there was no backwards compatibility for generate-tools. See pull request https://github.com/juju/juju/pull/968 for details of the original PR.

For this work, look at the second commit  f279b91.
What has been added is the capability to write tools and metadata by specifying *both* the stream and directory - previously, directory = stream. The generate-tools command will by default use a "releases" directory unless stream is explicitly specified.

There's another change here. Previous work added the capability to validate provider credentials. However, this breaks the juju metadata commands, which simply need to create an environ object to access some details. So a BootstrapContext implementation was introduced which allows the validation check to be made optional.

Much of the changes here are mechanical.

Tested by bootstrapping and env, using the various metadata tools to generate and validate metadata.