Identity Provider

Add an identity provider interface to state and an implementation for agents. User, Unit and Machine tags use the AgentIdentityProvider to authenticate.
Under the hood, nonce is only checked for the machine agent. The test for machine login in agent_test.go uses the nonce. I will add the nonce to the machine login in the user tests, even though the login fails before nonce gets checked.