Simplifies Task by publicising @promise and @async.

It made absolutely no sense to have `async` not public, since the `async`
function was basically just a setter. Making it a public field makes it simpler
and sweeter.

The `promise` field was promoted to a public field because asynchronous tasks
can define these conditions more easily. They can just use `@promise.wait-for
(merge lots-of-promises)` and call it a day. Easier for everyone.
Bumps to 0.2.4 - publicise @promise and @async.