Add Query.executeAndFetchLazy for lazy reading

Also improves performance of `Query.executeAndFetchFirst`, which no longer reads all rows from a `ResultSet`.

See https://github.com/aaberg/sql2o/issues/40 for explanation and comments.