Add ParallelMatcher

This allows you to run a match using multiple threads.
Set searchtime in CandidateMatcher.finish()

This tidies up the API a bit.  Also adds a test for matcher stats reporting.
Add a new CollectingMatcher abstract class

This tidies up the CandidateMatcher API a little more.  SimpleMatcher and
ScoringMatcher derive from CollectingMatcher, and their common logic is
abstracted here.  IntervalsMatcher and ParallelMatcher no longer need to
override the useless doMatch() method.
Use the number of cores available to determine threadcounts for ParallelMatcher
Add QueryCacheingMatcher

This is useful for debugging and/or testing.  It wraps an existing
MatcherFactory, and returns any QueryMatch objects along with the actual Query
objects that matched.
Add ExplainingMatcher