Cleanup, Async, and Device Flow

Added in the following features

* Made everything callback based, so it plays well with databases etc
* Cleaned up some of the code so it is less tangled
* Added in a device token flow (like Netflix, or http://developers.facebook.com/docs/authentication/devices/)