Anorm advanced aggregation

Fixed streaming support for Anorm is indeed loading too many data in memory, to keep same API about it.

This PR deprecates formed API and suggest replacement which allows to process all or some rows one by one (not waiting to have all in memory) inside a managed context (resources are closed by scala-arm). I think it also covers #3114 .

Minor improvements about managed stream.
Perhaps foldWhile?  Then the scala docs would be:

bq. Fold the row stream while the operation returns Right.

The "while" name is a little weird because convention means it's associated with a boolean predicate, but another option is we could change it to be more like a predicate, and have `op: (T, Row) => (T, Boolean)`.