Identity Provider

Add an identity provider interface to state and an implementation for agents. User, Unit and Machine tags use the AgentIdentityProvider to authenticate.
This might need to be updated to use the new MakeUser call if https://github.com/juju/juju/pull/358/ lands first