poset: Use IncoherentInstances to resolve overlaps.
The Ord instances for Poset are causing major problems with overlapping.
Adding IncoherentInstances on all the other Poset instances seems to
work, at least for now. It remains to be seen whether or not the
"Every Ord is a Poset" idea is actually worth the hassle, or whether
there's a better way to do this.
Creating our own Ord class inside the Poset module and defining our own
instances for it means we don't get to (easily) take advantage of the
very rich libraries built on top of Ord.