factors our imposed source setters in BinaryStateful
moves relevant private methods of BinaryStateful to public
refactors BinaryStateful to be more testable
eliminates sourceIdsBefore from Highlightable