Use best-mention info in linker and fix extraction diff bug

Linker now checks if document.isInstanceOf[BestEntityMentionResolvedDocument], and uses that info if it is.

Fixed the problem where linked extractions were displayed as new (diff from baseline) even if baseline had the same link. 

Re-organized DocumentExtractor to factor out most of the common code.
Changed several more traits from type-parameterized to type-bounded because it makes it possible to do .isInstanceOf checks and then use that trait's info.