Bootstrap Endpoint Address

After Bootstrap returns successfully, get the bootstrap instance and
write its addresses to jenv/environ info/connection info.
Merge branch 'master' of https://github.com/juju/juju into endpoint-on-bootstrap-take3

Conflicts:
	cmd/envcmd/environmentcommand.go
	cmd/juju/bootstrap_test.go
Make sure that the environTag is always set on the state.State struct when calling Open.
Revert "Merge pull request #530 from ericsnowcurrently/backups-storage"

This reverts commit a93e1df919450377b6dab707552582fd604cd8cf, reversing
changes made to 7f3fa3837a32416736f6affd7c7bb530e8af3f00.
Revert "Merge pull request #607 from wallyworld/agent-version-on-startup-trunk"

This reverts commit 880aaa83f1a474ef7856f1237c3781ab6a51dbfe, reversing
changes made to 66b33ceb24eef4a4593d9ab52edcf5f55a25089a.
Merge pull request #609 from bz2/revert_breakage

Revert pull requests #530 and #607

The gating test job on master is currently broken, and let through two broken pull requests, #530 and #607. This branch reverts those landings to restore head to a buildable state.
Merge branch 'master' into endpoint-on-bootstrap-take3
Make the state server info return a tag.
Fix ordering and state initialization.
Clean up the test.
Fix merge conflicts
Merge pull request #519 from waigani/endpoint-on-bootstrap-take3

Bootstrap Endpoint Address

After Bootstrap returns successfully, get the bootstrap instance and
write its addresses to jenv/environ info/connection info (choose
your name).
Merge pull request #605 from howbazaar/state-env-tag-always-set

Ensure that environTag is always set on state.State when Opened

When we Open state we need to set the environment tag.

Previously the environment tag was only specified when the database was initialized.  Now we set it every time the database connection is opened.  This is required for when we have multiple environments, and we want to filter the results based on the current environment.

A follow-up branch will update this tag based on the environment uuid from the api server when passing the state connection to the facades of the API server.
Merge pull request #607 from wallyworld/agent-version-on-startup-trunk

Merge pull request #602 from wallyworld/agent-version-on-startup

Set a machine's tools version when the agent starts

Fixes: https://bugs.launchpad.net/juju-core/+bug/1359800

The referenced bug shows an error initialising container support when a machine's agent starts up.

2014-08-20 22:06:07 ERROR juju.provisioner container_initialisation.go:154 cannot get tools from machine for lxc container
2014-08-20 22:06:07 ERROR juju.provisioner container_initialisation.go:95 starting container provisioner for lxc: initialising container infrastructure on host machine: agent tools for machine 5 not found
2014-08-20 22:06:07 ERROR juju.worker runner.go:218 exited "5-container-watcher": initialising container infrastructure on host machine: agent tools for machine 5 not found

The only way I can see that happening is if the container worker starts before the upgrade work sets the tools version. That can happen as both upgrade worker and container worker start up in parallel.

I moved the logic to set the tools version on a machine from the upgrade worker to the agent's APIWorker() method, thus ensuring the tools version is set early before it is needed.

I also found what looks to be bad logic in the container initialisation worker - the code to stop the worker was duplicated and one of the copies was called in the wrong place; it looked like the worker was terminated after the first container type was handled, meaning subsequent container types added to the machine may not have been started properly.
Merge pull request #612 from wallyworld/fix-machine-test

Make some machine/unit agent tests more robust

Fixes: https://bugs.launchpad.net/juju-core/+bug/1361721

If a machine is marked as Dead part way through agent startup, as happens in some tests, the agent exits without realising it needs to terminate.
Fix compile errors
Generate "system identity" in jujud bootstrap

I recently moved the system-identity generation
up the stack from each of the providers into
environs/bootstrap common code. This caused a
slow down in tests that weren't previously
generating the key as they use the dummy provider.

This should never have been in the client side;
I'm moving generation of the system identity
into bootstrap.

Fixes https://bugs.launchpad.net/juju-core/+bug/1361971
Fix tests
cmd/jujud: test contents of system-identity written
Merge pull request #615 from wallyworld/agent-version-on-startup-master

Agent version on startup master

Fixes: https://bugs.launchpad.net/bugs/1359800

Was reverted because it was thought to be causing a regression, but that wasn't the case. So resubmitting.