Fix bug #1333098. Concurrent access to the objectCache needs to be protected by a mutex.

While there, I discovered a difference race condition in the api Watcher code.
So I fixed that in passing.

The new test fails if you run under '-race', and the tests in cmd/jujud/*TestMachineAgentRsyslog* used
to fail with the race detector and now pass.
all api life methods take names.Tag
Added tests for UTF-8 validity of option values.
make the WaitGroup a local var, which leaves the tests passing, and avoids the possible race condition.
Merge branch 'master' of https://github.com/juju/juju into 112-state-life-takes-a-tag
state methods take a tag as a string, not an id
Merge branch 'master' of https://github.com/juju/juju into set-test-utf-encoding
Improved testing of valid and invalid UTF-8 encoded values.
Merge branch 'master' of https://github.com/juju/juju into set-test-utf-encoding
Fix test failure
Do not allow the peergrouper worker to publish empty/nil api server addresses
Merge pull request #153 from davecheney/112-state-life-takes-a-tag

api, apiserver: internal life methods now take a names.Tag
Merge pull request #155 from wallyworld/peergrouper-publish-ignore-empty

Do not allow the peergrouper worker to publish empty/nil api server addresses

This is an attempt to fix bug https://bugs.launchpad.net/juju-core/+bug/1333682

Something is writing empty api server addresses to state, which are then propagated to the machine agents, which then update the agent.conf file and boom, the apiaddresses entry is deleted. So I've disallowed the peergrouper worker from publishing empty addresses.
provider/azure: use Location in vnet creation; always delete AG

The Azure docs recommend using Location when creating a virtual
network site, so we do that (with a prerequisite gwacl branch).
Also, now that the vnet is not tied to an affinity group, we can
attempt to delete the affinity group even if deleting the virtual
network failed.

Fixes https://bugs.launchpad.net/juju-core/+bug/1259947
Merge pull request #146 from jameinel/api-concurrent-caching-1333098

Fix bug #1333098. Concurrent access to the objectCache needs to be protected.

We add a Mutex around the objectCache map.

While there, I discovered a difference race condition in the api Watcher code.
So I fixed that in passing.

The new test fails if you run under '-race', and the tests in cmd/jujud/*TestMachineAgentRsyslog* used
to fail with the race detector and now pass.
Merge branch 'master' of https://github.com/juju/juju into set-test-utf-encoding
Made the tests more explicit and added comments which describe the behavior. After a discussion this morning we accept this. It never has been an issue in real-life and only occurred during a test trying to transport binary data as string.
Merge pull request #157 from axw/lp1259947-azure-vnet-location

provider/azure: use Location in vnet creation; always delete AG

The Azure docs recommend using Location when creating a virtual
network site, so we do that (with a prerequisite gwacl branch).
Also, now that the vnet is not tied to an affinity group, we can
attempt to delete the affinity group even if deleting the virtual
network failed.

Fixes https://bugs.launchpad.net/juju-core/+bug/1259947
Added value check to set command.
Merge pull request #150 from TheMue/set-test-utf-encoding

Added tests for UTF-8 validity of option values.

So far tests of the API and the set command checked only for ASCII values. Usage of UTF-8 should lead to no probems. The usage of UTF runes in the test value verifies this.