Result reader changes for preview and export: Phase 1

Phase I of supporting previews and export in result readers. It includes
changes to common code across all readers and specific code of XML
readers.

Worth noting when reviewing: all single readers expose SearchResults
interface. It was introduced for multi-reader to return an iterator for
each result set without other methods in single readers themselves such
as 'close'. StreamIterableBase is a base classs shared by all readers,
including both single and multi readers. Multi readers work by returning
the same single reader instance for each result set, which keeps its
advancing reading position.

Phase II will includes changes for Json and CSV, and addtional unit
tests.
Handle export in JSON and CSV readers + code cleanup

Refer to http://eswiki.splunk.com/Java_ResultsReaderMatrix. Some of the
code cleanup changes were motivated by code review feedbacks. This
change does not include integration with Fred's test code change, which
will be done next as a seperate commit.
Merge pull request #36 from splunk/feature/results_reader_intermediate_json

Handle export in JSON and CSV readers + code cleanup + merged changes from child branch
Merge pull request #35 from splunk/feature/result_reader_intermediate

Result reader changes for preview and export: Phase 1 + changes from child branch