Add apt_preferences file with bootcmd

The apt_preferences file must be written
before we run "apt-get upgrade", or the
pinning does not take effect on non-bootstrap
machines.

Fixes https://bugs.launchpad.net/juju-core/+bug/1370781
Add tools datasource registration framework
Remove provider storage from tools search path

Also, register OpenStack keystone search path for tools.
Revert name change
Fix azure, local, maas provider
Fix ec2 tests
Fix dummy, joyent provider tests
Fix more tests
Fix tools tests

Now we upload tools to the default tools
location (as if we controlled the public
tools container), rather than to provider
storage.
Address review comments
Remove stray line
Several fixes to avoid building jujud in tests
More fixes after rebasing
Merge pull request #804 from axw/tools-metadata-no-provider-storage

Remove provider storage from tools search path

Also, register OpenStack keystone search path for tools
and fix getKeystoneImageSource so it doesn't error if
the service isn't defined in keystone.

To minimise the impact in the short term, I've added a
"DefaultToolsStorage" field to JujuConnSuite which is
an environs.Storage that overrides the default tools
location (i.e. streams.canonical.com/juju/tools). Tests
that previously uploaded tools to provider storage now
mostly use this.
Merge pull request #807 from axw/lp1370781-upgradejuju-pinned

Add apt_preferences file with bootcmd

The apt_preferences file must be written
before we run "apt-get upgrade", or the
pinning does not take effect on non-bootstrap
machines.

Fixes https://bugs.launchpad.net/juju-core/+bug/1370781
upgrades: add step to migrate tools to environment storage
Address review comments
upgrades: update toolstorage migration with tools-stream support
cmd/jujud: fix upgrade-steps test