NRTSuggester: Support near real-time deleted document filtering for suggestions

**NOTE:** This is a PR against `feature/nrt_suggester` and not the `master`!

**Idea:**
  - encode lucene docids to corresponding FST outputs
  - make sure no surface form is lost even though there may be exact duplicates
  - use encoded docids to perform near real-time deleted doc filtering

**Implementation & Considerations:**
  - Currently the FST BytesRef Output is in the format:
     `surface_form` + `PAYLOAD_SEP` + `payload` + `PAYLOAD_SEP` + `docID`
  - Duplicate surface forms are stored uniquely with dedup bytes. (uses the `END_BYTE` before the dedup bytes, maybe we can support `exact_first` in the future)
  - `maxAnalyzedPathsForOneInput` is now dynamically set by taking into account the # of surfaces per analyzed form at build time (to deepen the `TopNSearcher` queue for deduplication of same output form)
  - `TopNSearcher` queue size is dynamically changed using a heuristic based on the cardinality of deleted docs
  - Minor refactoring
  - Adds Suggester benchmarks

**Benchmarks:**
```
-- Build time
  AnalyzingSuggester input: 3472, time[ms]: 255 [+- 9.08]
  XAnalyzingSuggester input: 3472, time[ms]: 412 [+- 11.78]
  XNRTSuggester   input: 3472, time[ms]: 405 [+- 9.85]

-- RAM consumption
  AnalyzingSuggester size[B]:      807,840
  XAnalyzingSuggester size[B]:      758,480
  XNRTSuggester   size[B]:      770,448

-- Lookup performance (prefixes: 100-200, num: 7)
  AnalyzingSuggester queries: 3472, time[ms]: 125 [+- 3.41], ~kQPS: 28
  XAnalyzingSuggester queries: 3472, time[ms]: 165 [+- 5.77], ~kQPS: 21
  XNRTSuggester   queries: 3472, time[ms]: 170 [+- 3.50], ~kQPS: 20

-- Lookup performance (prefixes: 6-9, num: 7)
  AnalyzingSuggester queries: 3472, time[ms]: 109 [+- 3.93], ~kQPS: 32
  XAnalyzingSuggester queries: 3472, time[ms]: 94 [+- 4.75], ~kQPS: 37
  XNRTSuggester   queries: 3472, time[ms]: 107 [+- 5.55], ~kQPS: 32

-- Lookup performance (prefixes: 2-4, num: 7)
  AnalyzingSuggester queries: 3472, time[ms]: 178 [+- 6.05], ~kQPS: 20
  XAnalyzingSuggester queries: 3472, time[ms]: 151 [+- 4.59], ~kQPS: 23
  XNRTSuggester   queries: 3472, time[ms]: 173 [+- 7.49], ~kQPS: 20

-- NRT Lookup performance with deleted doc filtering
  -- prefixes: 100-200, num: 7
   [ 0% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 165 [+- 7.11], ~kQPS: 21
   [20% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 165 [+- 5.80], ~kQPS: 21
   [40% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 166 [+- 7.01], ~kQPS: 21
   [60% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 167 [+- 5.39], ~kQPS: 21
   [80% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 167 [+- 5.59], ~kQPS: 21
  -- prefixes: 6-9, num: 7
   [ 0% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 105 [+- 3.79], ~kQPS: 33
   [20% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 114 [+- 5.90], ~kQPS: 31
   [40% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 135 [+- 14.80], ~kQPS: 26
   [60% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 137 [+- 4.74], ~kQPS: 25
   [80% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 166 [+- 5.32], ~kQPS: 21
  -- prefixes: 2-4, num: 7
   [ 0% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 170 [+- 4.01], ~kQPS: 20
   [20% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 192 [+- 5.98], ~kQPS: 18
   [40% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 219 [+- 6.19], ~kQPS: 16
   [60% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 296 [+- 12.09], ~kQPS: 12
   [80% deleted docs] XNRTSuggester   queries: 3472, time[ms]: 559 [+- 11.32], ~kQPS: 6
```
closes #7133
why does this have an `@Ignore` annotation seems like we support this already?