Anorm result cursor

Replaces previous result `Iterator` (and even before `Stream`) by a `Cursor` trait that allows to work inside a managed context (see `withResult[T](f: Cursor[Row] => T): T`) and iterate `ResultSet` in an immutable way.
Common result functions update to use `withResult`.