Remove maps and check for existance of maps before timing out or before stopping task on complete

With the revisions contained in 0.6.7, it was still possible for a race condition to occur, while some asynchronous tasks were executing in the task completion flow or the task timeout flow.  This fixes that by removing the callbacks from the maps prior to any async function calls, and by checking for the existence of the callback before calling stopTask.

This fix also adds additional information of the values of the task and the taskKey to the precondition error message.
Fixed task limit error message so it is an instance of Error and not a string
Merge pull request #16 from Kinvey/timeoutRaceFix

Timeout race fix
Updated changelog
Fixed test case not calling done() properly
Bumped version to 0.6.8
Add target to msg