Rewritten SDK

The SDK has been rewritten to be much easier to use. Everything is done through a simple block based asynchronous API.