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
Auth token tests create temp cert directory

The auth token tests were using the example signing directory as the
default signing directory. This is dangerous because the auth token
middleware may write to the directory in the course of the tests.
With this change, a temporary directory is created for each test
that's populated with the sample files.

Test this by doing `chmod -w examples/pki/certs` before running the
tests.

Change-Id: I139c6f0602d3258ac65ffe54bc0e7c3f82d14264