Identity Provider

Add an identity provider interface to state and an implementation for agents. User, Unit and Machine tags use the AgentIdentityProvider to authenticate.
Tag kinds are whitelisted in state/apiserver/identityprovider/id.go:LookupProvider(...)