Attempt at fixing DatagenRiver OutOfMemoryError: use a single thread.

Moved everything from the indexing thread to the thread doing the pull from datagen.  The parsed objects are put immediately into the bulk request, and the bulk request is sent off when it reaches the bulk limit, all in the same thread.
Moved the DatagenPuller class into a separate file.

- The class was previously an inner class in DatagenRiver
- The class was previously hard to test
- The new class uses property getters to get the river's variables,
previously accessed directly