Fix partial order semantics for join-semilattices.

Previously, I had a confused understanding of how a
join-semilattice should order elements. Oscar set me
straight.

Now, Semilattice has two methods to generate PartialOrder
instances:

 - asMeetPartialOrder
 - asJoinPartialOrder

This means that MeetSemilattice and JoinSemilattice can
each create the correct partial ordering for a given
Lattice.