Make RTree async

All methods on RTree now return Deferreds instead of results this will allow future index implementations to be async.

This does however make some of the method signatures look really funky and I think they will break in some cases. In particular the method signature on `remove()` is now very funky. and the method seems to rely on a specific number of arguments being passed in a particular order which seems really fragile so im open on how to fix it...

This probably shouldn't be merged until someone the issues with method signatures are resolved.