ID Site implementation

Synopsis:

* New method `Application.createIdSiteUrl()` for creating the redirect URL that takes the user to the ID site

* New method `Application.handleIdSiteCallback()` for reading the JWT response from the ID site callback and building an `AuthenticationResult`

* New property `idSiteResponse` on `AuthenticationResult` for storing the decoded JWT response value - this is where you can get your `state` property from if you specified it.

* Implement a default Nonce Store by using a region in the data store cache

* New option `nonceStore` on the Client constructor, accepts an interface object for interacting with a custom Nonce Store
I chose `AuthenticationResult` because we use it in several places to return the result of an authentication attempt (which this is, IMO).  We then decorate the instance it with any relevant information (such as the response token in this case - which contains provided state - or the OAuth scope in our API auth situation).  We let the user call `getAccount()` to get the `Account` instance, if they need it.