Consolidate our type shenanigans.
Revamped the way priority is handled.

You now do: foo.connect(blah).atPriorty(N) instead of overriding priority() or
calling Slot.atPriority().

This avoids the weirdness of having priority come from a method (and therefore
conceivably changing over time, which would cause badness). It also eliminates
an issue where the priority of a collected weak cons would magically change,
thereby causing problems.