Proper async testing

The parser tests need to be registered using functions that take a callback.  This is the indication to Mocha that test assertions are made asynchronously.  After all assertions are made, the callback is called.

Things are ok without this change because tests are passing.  When tests fail, the reporting is all wrong because the test runner is out of sync.