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 so that we can use it as we flatmap the returned
 iterators.
Define a noop function so its clear what's going on here:

```scala
val noop: () => Unit = () => {}

def apply(..., closeIter: () => Unit = noop)
```