Adding Support for Async Tests

Async Tests have to marked @async.
$DONE(expected, actual, message) is used to indicate the test is complete
the arguments to $DONE are optional. It can also be called as $DONE()