Support for non-blocking DataHandler

This is a quite a bit of a refactoring. I'm guessing you'll want to review this with some current implementations of the service as I currently don't have any that I can vet it with. We are moving there, but I needed it to support the data-handler to be actually non-blocking based upon Futures. Otherwise, the Async helper for the Play Framework really doesn't do anything in an asynchronous style.  Assuming that storing tokens, finding the user, authenticating a password was done in some sort of database, then this really needed to be able to be accomplished in a non-blocking way.

It's important to note that this will assume a hard cutover for current users as the trait's signature has changed. Assuming some documentation could be added to say if you want to continue to use it as-is in a blocking manner just wrap your implementation in a Future.successful{ ... }