Identity Provider

Add an identity provider interface to state and an implementation for agents. User, Unit and Machine tags use the AgentIdentityProvider to authenticate.
I think we should be returning a BadRequest type error here, as we already have checked that the entity exists.