Rewrote submodules to use ConstraintKinds

This shortens many signatures from

(HasPart a, v ~ Part a, Ord v ...)

to

(HasPart' a ...)