Implement a callback interface with promises

Fix #37
Any method that returns a promise can take a callback with
the exception of `cursor.each`.