Promises, synchronous errors and tests

Synchronous functions are wrapped in a `try..catch` to support synchronous errors and the return function is checked for a promise.
Support common `npm test` cli command
Merge pull request #2 from blakeembrey/add-support

Promises, synchronous errors and tests