Updated factory methods, removing stored test context from factory and removing varargs for creation methods.
agent: initialise mongo admin user before initialising state

This allows us to open mongo fully authenticated when opening
state, thus allowing the use of session.Copy.
state: remove unit.SetMongoPassword
Only login to "admin" mongo database

We create a user in the admin database
with read/write privileges to all databases,
so there's no need to add users to each
other database. Consequently, we can remove
the mongo.SetMongoPassword function and
change state.Machine.SetMongoPassword to
just call mongo.SetAdminMongoPassword.

mongo.SetAdminMongoPassword no longer
calls Login itself.
agent: use mongo.DialWithInfo

This sets the socket timeout, etc.
Merge pull request #498 from axw/state-remove-setmongopassword-take2

Only login to "admin" mongo database

We create a user in the admin database with read/write privileges to all
databases, so there's no need to add users to each other database.
Consequently, we can remove the mongo.SetMongoPassword function and change
state.Machine.SetMongoPassword to just call mongo.SetAdminMongoPassword.

mongo.SetAdminMongoPassword no longer calls Login itself.

This is a reimplementation of PR #414, which was broken. Previously
SetAdminMongoPassword would call Login, which meant machine-0 would
login as machine-1, machine-2, etc. This would break when the other
machine came up and its agent changed the password for that user.

Also:
 - state: remove unit.SetMongoPassword
 - agent: initialise mongo admin user before initialising state

   This allows us to open mongo fully authenticated when opening
   state, thus allowing the use of session.Copy.
Various changes to support Mongo 2.6

Disable auth in Mongo for all except
a handful of tests, which we segregate
and enable authentication for explicitly.
Merge pull request #506 from axw/mongo2.6-compat

Various changes to support Mongo 2.6

Disable auth in Mongo for all except a handful of tests, which we segregate
and enable authentication for explicitly.

Ignore all commits other than 326c231: this builds on top of PR #498.

Requires https://github.com/juju/testing/pull/28
Merge pull request #490 from tasdomas/factory-followup-fixes

Remove varargs and test context object from factory.

Due to lifetime differences, it is impractical and not recommended to set the test context for the factory during initialization, so all creation methods (MakeUser, MakeService, etc.) now take an additional *gc.C parameter.

Also, variadic parameters are exchanged for a pointer parameter for object properties - MakeUser() becomes MakeUser(c, nil). This makes the code more readable and idiomatic.