Introduce Parse{Unit,Service,Machine}
Merge branch 'master' of https://github.com/juju/juju into 106-parsetag-refactor

Conflicts:
	state/api/deployer/unit.go
	state/api/firewaller/service.go
	state/api/provisioner/machine.go
wip
Update for juju/names part 3
Final tweak
state/machine: use WaitAgentPresence, rename AgentAlive
state/machine: StartSync in SetAgentPresence
state/machine: check IsManager and only Sync presence watcher
presencer: make the presencer interface official
state/presence: fixing issues from review
Bug #1328716: Clean up CONTRIBUTING a bit.
update to latest juju/names
Merge branch 'master' of https://github.com/juju/juju into 106-parsetag-refactor
fixups after merge from trunk
Merge pull request #103 from davecheney/106-parsetag-refactor

Update for juju/names refactor part 3

* Replace all the calls to ParseTag(tag, hint) to a specific ParseXXXTag method. 
* Where ParseTag is not called with a hint, adjust as necessary, there is one call for this in the codebase.
* Add some grossness where code like

type Unit struct { tag string }
func (u *Unit) Name() { _, id, err := names.ParseTag(tag, names.UnitTagKind); if err != nil { panic(err) } }

Into something a little more explicit using type specific ParseXXXTag methods.

In the next branch rather than storing the string form of the tag inside the Unit structure (without validation I may add), then parsing it (and possibly panicing) to get its Id, store a real Tag value in the struct then calls to name can just return the Id of the tag (or a more specific value available on the Tag's implementation type).
Close the state connection, and run the tests.
Merge pull request #65 from ericsnowcurrently/contributing-doc

Bug #1328716: Clean up CONTRIBUTING a bit.

Per Bug #1328716, here's a patch that updates CONTRIBUTING to mesh better with README.  It also fills in some gaps, particularly with tools, and makes the workflow more clear.  Given that working on this patch is my first exposure to the workflow I have no illusions as to perfect accuracy.  So feedback would be much appreciated.
We shouldn't attempt to UTC a zero time.
Merge pull request #2 from wwitzel3/010-bootstrap-ensure

state/machine: use WaitAgentPresence, rename AgentAlive

Using WaitAgentPresence after SetAgentPresence gives time for the first write of the pinger data to mongo to be persisted. This fixes issues with juju status and ensure-availability being run in quick succession with juju bootstrap.
Merge pull request #110 from howbazaar/fix-factory-tests

Actually run the factory tests.

Forgot to hook up the actual tests.

Running them raised a few issues, fixed here.
 * closing the state connection
 * making sure the timestamps returned from the state.User are in UTC