Move fieldNames into a type class

By moving `fieldNames` into a type class, we allow the possibility for a
library user to define their own field names. Not everyone will name
their database columns as they name record fields.