separate and enrich ConcurrentMergeScheduler; start cracking IndexWriter by separating MergeControl
implement AlcoholicMergePolicy
move segment-to-string functions to ReaderPool; separate MergeControl from IndexWriter; separate ReadersAndLiveDocs
implement IndexWriter.flush()
fix ensureOpen(bool)
implement doFlush and related various methods (complicated)
implement DocumentsWriterDeleteQueue.anyChange()
implement DocumentsWriterFlushQueue.hasTickets()
implement DWFC.markForFullFlush()
fix assert fail in DW.flushAllThreads(); implement DWFC.updateStallState()