re-scan partial query ref gathers more frequently
fixes and improvements for query file ref gathers

FileRefSource incorrectly assumed that only one thread could
(concurrently) call meshy's receiveReference method. If the
tryLock failed, it was assumed that the lock owner was the
consumer thread in the middle of short-circuiting and so file
refs were dropped. However, it was more likely to have been
another file ref gatherer.

Using a blocking lock would resolve, but it is not desirable to
block netty event threads even for small amounts of time. Therefore,
the class has been restructured with the most high-performance,
albeit confusing, concurrency support I could think of. No mutexes,
consumer thread does concurrent work, netty event threads do less
work, no sleeping, no naive spin-locking, etc. It is probably
faster than even the previous, naive, broken version.

Additionally, there is some extra logging, and in particular, it
will show responders who missed the short circuit time out. (on
a per request basis).