Performance improvements

1.  Don't load the field values unless you have hits or doing a no_match hit.
2.  Lower the overhead on the BreakIteratorSegmenter by having it save bounds
between when the segment is deemed acceptable and when it is actually built.

Doing the second one required reworking the Segmenter interface which required
some small changes to all the segmenters.