fixes #14 TaskLimit errors are thrown instead of emitted

A precondition check in the TaskLimit.stopTask() method was throwing an exception rather than returning the error in a callback or emitting the error, resulting in unhandled exceptions.  This fix returns it in the callback so it can be handled up the chain.

Fix also addresses tests for this issue, and fixes some other asynchronous handling in the unit tests.
Aborting commit due to empty commit message.
Removes a race condition and handles errors returned by TaskLimit.stopTask()

Removes a race condition where stopTask was potentially being called twice, once for the end of the task and once for a task timeout.  This would cause a precondition check to fail in stopTask and throw a
n unhandled exception.

The fix also now passes a callback to stopTask, and if an error is received, emits it.
Moved cleanupMaps in the task timeout to within the callback for stopTask
Merge pull request #15 from Kinvey/14-TaskLimitErrors

14 task limit errors