extract SingleSquasher from DuplicateSquasher.
this state does not appear to be possible to reach.
move validation into squasher.
clean up naming.
move duplicate handling stuff to lib.
Merge pull request #134 from botandrose/squashing_cohesion

Improve squashing cohesion