Added low level API to use node promises and functions (redux)

Re-implemented PR #35 to include feedback in comments, also cleaned up a few typos while I was there.