Address #51: when_all/when_any result type

First draft (not entirely happy with it):

- Fixed return types.
- Adjusted requirements (should accept any of `future<R>`, `future<R>&`, `shared_future<R>`, `shared_future<R>&`, `shared_future<R> const`, `shared_future<R> const&`), 
- Added `when_any` and `when_any_back` to synopsis.

Notes:
- I fixed the inconsistent use of `typename`/`class` for these functions, but there are several other cases to take care of.
- The wording makes use of both "first/second overload" and "first/second signature", it should be consistent (my vote goes to "overload").
- I was surprised to see there's a variadic overload of `when_any_back`, since it cannot do anything differently than `when_any`. Was it introduced for symmetry? If so, I would suggest to be very explicit and spell out that the effects are equivalent to `when_any`.