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
Ah, but it's not just an AuthenticationResult.  The result also accounts for registration results.  It also reflects a result after forgot password has been completed.  This is why the Java SDK uses an `AccountResult` interface (and not `AuthenticationResult`, which also exists), to account for this general use case.

Additionally, it is very likely that we're going to build even more functionality into the ID Site, and the result needs to be generic - we might have workflows on the ID Site that don't represent authentication at all - but they'll always represent behavior for a particular user (account).  

Hopefully that clarifies the Java SDK naming design.  Does that make sense?