RFC: inject `Future[T]` automatically
Currently, an async proc looks like so:

```nim
# Return int
proc a(): Future[int] {.async.}
# Return void
proc b(): Future[void] {.async.}
# Return void, take 2
proc c()] {.async.}
```

There is an asymmetry in void which is confusing because there are two ways to do `void` return, one of which implicitly injects the future and the other that doesn't.

The second confusion comes from the similarity of async and non-async implemenations - ie it's possible to create a function `proc d(): Future[int] = ...` without using the async transformation and still fit it within the sync/async framework.

As such, I'd suggest that the async macro be changed such that it always automatically injects the future:

```nim
proc a(): int {.async.} = ...
proc sameAsA(): Future[int] = ...
```

Regarding backwards compat, the macro can detect the future and give a deprecation warning for a transitionary period of time.
