Per client shared secret

As noted in the Silhouette group, I need the JWTAuthenticator to have per-client shared secrets rather than a global shared secret.  A global shared secret makes sense if the Play! app is making and checking the JWTs;  it doesn't make as much sense if clients are making JWTs.

The basic strategy was to implement a SharedSecretService.  In practise, it will probably use the UserDAO to find the user's shared secret.  The JWTAuthenticatorService needed modification to take the shared secret service as a parameter.  The shared secret came out of the JWTAuthenticator.  Some code in deserialize needed rearranging so we could get the user (and thus the secret) and then verify the integrity of the JWT.

Please let me know if there's something else I should do or if I'm even on the right track.  All the existing tests still pass.  I haven't added any new ones.  Should, but I'm too tired right now.  Issuing this pull request now to hopefully get some feedback before I work on it some more tomorrow.