Rework DbalReader to reduce memory usage.

Also add several tests about iterator interface

For one of my projects, I needed to pull more than 30k records from db. With previous implementation, it was not working.

refs #66