Indexing: force refresh when versionMap is using too much RAM

If the user sets a high refresh interval, the versionMap can use
unbounded RAM.  I fixed LiveVersionMap to track its RAM used, and
trigger refresh if it's > 25% of IW's RAM buffer.  (We could add
another setting for this but we have so many settings already?).

I also fixed deletes to prune every index.gc_deletes/4 msec, and I
only save a delete tombstone if index.gc_deletes > 0.

I think we could expose the RAM used by versionMap somewhere
(Marvel?  _cat?), but we can do that separately ... I put a TODO.

Closes #6378
I'll fix the typo.

Confusingly, it is safe to clear the old map.  didRefresh will be false if Lucene didn't see any changes (and so didn't open a new reader) ... if old map is non-empty, that those ids were already reflected in the last reopen.  This is because we assign a new "current" slightly before Lucene actually flushes any segments for the reopen, and so  concurrent indexing requests can sneak in a few additions to that current map that are in fact reflected in the previous reader.

Also, only one refresh can run at once in Lucene's ReferenceManager, so we'll always see beforeRefresh then afterRefresh (never intermixed).