Support for new status formatter: tabular.
Migrated formatter to its own file. Refactoring.
Merge branch 'master' into status-formatter-tabular

- Migrated FormatTabular to status_formatters.go.
- Migrated return error to github.com/juju/errors
- Removed debugging/panic in an impossible situation.
- Migrated towards use of stack-local byte-buffer rather than a heap-based pointer dereference.

Conflicts:
	cmd/juju/status.go
	cmd/juju/status_test.go
upgrades: migrate uploaded image metadata to environment storage

We no longer search for image metadata in provider storage.
This is the final piece: migrate existing metadata from provider
storage to environment storage, preserving paths and data exactly.
Made indentation level a constant for clarity.
cmd/juju: ensure that API calls used by "juju ssh" are allowed during upgrades

We recently had a regression where an API call required by "juju ssh"
wasn't being allowed by the API server while upgrades are in progress.
"juju ssh" is one of the few commands that is supposed to work during
upgrades.

The Client used by "juju ssh" is now forced into an interface and this
is checked using reflection against what the API server will allow
during upgrades. Effectively, the compiler helps to check that the
required API methods will be allowed.
apiserver: refactored upgradingRoot method check

Given that the API methods allowed during upgrade are all on the
Client facade, avoid having to write "Client." at the front of each
method name.
Merge pull request #803 from mjs/check-ssh-api-methods-are-allowed-during-upgrade

cmd/juju: ensure that API calls used by "juju ssh" are allowed during upgrades

We recently had a regression where an API call required by "juju ssh" wasn't being allowed by the API server while upgrades are in progress. "juju ssh" is one of the few commands that is supposed to work during upgrades.

The Client used by "juju ssh" is now forced into an interface and this is checked using reflection against what the API server will allow during upgrades. Effectively, the compiler helps to check that the required API methods will be allowed.

http://reviews.vapour.ws/r/64/diff/
Prepend EnvUUID to _id of each services doc.

Add an upgrade step, respective tests and a helper function to change
the _id field of each service doc from "id" to "envUUID:id".
Add tools-stream config to allow tools from different streams to be used
Merge pull request #797 from axw/upgrades-image-metadata

upgrades: migrate uploaded image metadata to environment storage

We no longer search for image metadata in provider storage.
This is the final piece: migrate existing metadata from provider
storage to environment storage, preserving paths and data exactly.
Fix the panic when no running environment.
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
Tweak a test that assumed sort order.
Fix yucky code
Add deprecation warning
provider/openstack: don't fail if product-streams isn't defined

Fixes https://bugs.launchpad.net/juju-core/+bug/1371605
Merge pull request #809 from axw/lp1371605-provider-openstack-keystoneurl

provider/openstack: don't fail if product-streams isn't defined

Fixes https://bugs.launchpad.net/juju-core/+bug/1371605
Factory methods using tags for user parameters.
Limit adding and sending metrics to the collect-metrics hook.