Fixes asynchronous API

In many of the functions in `bcrypt.js`, there was a lackluster
adherence to the concept of sync OR async APIs: in many of the
supposedly asynchronous functions, the callbacks would be called
synchronously, when they should always be called asynchronously.

See:
- http://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/
- http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony
- https://www.joyent.com/developers/node/design/errors

With this commit, this has been fixed by appropriately using
`process.nextTick` to asynchronously call the callback instead.