Derive HasField instances
===
The [`OverloadedRecordDot`][overloaded-record-dot] syntax is surprisingly nice.
I really enjoy writing code with this extension and I was originally hesistant.
[Persistent][persistent] has a really nice feature where it will automatically remove
prefixes from models. Given a model like,
```
BankAccount
accountNumber String
```
You would normally reference this field as `bankAccountAccountNumber`. However,
with overloaded record dot you can write `bankAccount.accountNumber` which is
much nicer.
At work, I really wanted this for **every** record. With this library, I can
write,
```haskell
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
import DeriveHasField
data BankAccount =
BankAccount
{ bankAccountAccountNumber :: String
}
deriveHasFieldWith (dropPrefix "bankAccount") ''BankAccount
```
[overloaded-record-dot]: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/overloaded_record_dot.html
[persistent]: https://github.com/yesodweb/persistent