Apply https://code.launchpad.net/~gz/juju-core/gosshnew_1312940
Tweak some mongo timeouts and refactor multiple bits of mongo functionality into a single mongo package
Tweak setmongopassword api
Tweak some mongo timeouts and refactor multiple bits of mongo functionality into a single mongo package
Tweak setmongopassword api
Merge branch 'mongo-refactor-timeout-tweaks' of https://github.com/wallyworld/juju into mongo-refactor-timeout-tweaks

Conflicts:
	cmd/jujud/machine.go
	cmd/jujud/machine_test.go
Merge pull request #67 from davecheney/update-go-crypto-ssh

Update code.google.com/p/go.crypto to the latest

Fixes LP 1312940, Fixes #43

This PR applies a branch from mgz (https://code.launchpad.net/~gz/juju-core/gosshnew_1312940). This branch was proposed a while ago but was delayed until all builders and package builders were running Go 1.2. 

Sinzui has confirmed that this has now happened so we are unblocked and can move off this old version of go.crypto.

This has the further effect that Go can be built from source without godeps, and this unblocks tools that consume Juju via `go get`, and makes us look like good Go citizens.
Have errors from plugins passed back as the error code from juju.
Refactor SetMongoPassword api, various fixes
Merge pull request #72 from wallyworld/mongo-refactor-timeout-tweaks

Mongo timeout tweaks and refactoring

This started out as a branch to fix intermittent CI test failures. Certain tests were failing due to socket timeout errors when updating admin user creds in mongo. These operations were happening during test setup or teardown where not much other mongo activity is happening but the system would be busy. We were setting the mongo socket timeout to only 10s (which matches the mongo internal ping period). My theory is that the mongo socket timeout is too short and the busy system sees the socket timeout expire before data can be transfer and the socket is closed. I changed the timeout to 21s (2 x internal heartbeart time plus a bit).

The socket timeout was being set in a couple of places. And we had mongo specific stuff inside state. So I gathered the main bits of mongo functionality from state and moved agent/mongo to mongo and put it all in there. So the mongo stuff is all together and out of state.

I also updated the AddUser calls to UpsertUser because AddUser is deprecated in 2.4
Merge pull request #81 from howbazaar/plugin-return

Have errors from plugins passed back as the error code from juju.

If the plugin returns a non-zero result, we should pass that through from juju itself, rather than printing an error and returning a (maybe) different error code.