KindSignatures is implied by TypeFamilies
Simplify some instances with the `on` function
PrimitivePath synonym for type inside PathName

This enables writing unconditional type signatures for functions acting
on the type inside PathName.  I didn't do this at first because I don't
like the idea of a conditional type synonym, but it's only internal and
pretty much unavoidable anyway.  Does make for cleaner code.