HList PR refactorings

I think this makes the type-level code much easier to digest.