Resolve #38 - Create an in-memory implementation of IDataReader.

This enables creation of a data reader backed by one or more in-memory 2D string
arrays, but behaves in much the same way as a normal IDataReader instance.

* Tests with reasonable coverage created for this type.