GEOMESA-122 Split OR filters into multiple queries

* Created a OrSplittingFilter Visitor which helps break apart a more complex Filter into pieces.
* Moved up the SelfClosingBatchScanner into core and implemented a basic CloseableIterator trait.
Ah!  Note the closure!  In defining the new SelfClosingIterator on line 36, we are closing over the reference to self which is an Iterator in its own right.  (self is the 'base' collection which are flatMapping over.)