encourages users to fail futures properly

@gdickinson pointed out to me that we don't have a place in effective scala where we explicitly say we should prefer the Future failure mechanism over throwing exceptions.  This makes it explicit, rather than implicit.
I don't think this should be a blanket rule. I think exceptions should still be thrown to indicate internal errors (think `assert` and `require`) and JVM errors (e.g. resource exhaustion).