Split identity server into v2 and v3

We make the IdentityServer object an abstraction layer between v2 and v3
APIs as the whole object. By doing this we don't have to check at the
beginning of every function whether to use v2 or v3. This will be
important when using auth plugins because the expected workflow is just
to issue the calls and see which ones fail with EndpointNotFound and so
we would have to reorder the code to possibly issue each call twice.

We need the additional test discovery entries as discovery now happens
when you instantiate the IdentityServer object - not when you use it.
This will have no practical difference, it's just that in testing we
sometimes create the object to read values from it.

Change-Id: Ie05d99946c2b1127992cd9a083a2068a6e80398b