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
I actually wrote the separate methods at the beginning. But I wanted to emphasis that both parameters (the SQL and its parameters) go together.

May be add a setSQLParameters only method, leaving setSQL as is, except for the check.