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.
Aggregate has a slightly different signature though in Scala collections:

```scala
def aggregate[B](z: ⇒ B)(seqop: (B, A) ⇒ B, combop: (B, B) ⇒ B): B
```

It's semantically a map-reduce, which is a more general form of fold.