Add `withKeys` to turn an HList into a record

This is useful when you want to take an input HList, perform
transformations on the values, and then return the results as a record with the
original keys. This can be more convenient than tracking the fields the
whole way through the transformation.