Encourage use of Future.exception over throw for non-fatals.

This PR supersedes Moses' earlier one which addresses these points. I've taken Marius' changes into consideration, modulo some formatting and minor wording cleanups.
perhaps useful to point out that Futures represents the _result_ of successful and failed computations, and not the computation itself (ie it's not meaningful to retry a Future, but it is meaningful to retry a () => Future[_]).