HasField should allow unlifted record fields
If I say
```hs
data Rec = MkRec { field :: Int# }
```
I should be able to write
```
f :: Rec -> Int
f r = I# r.field
```
(with `-XOverloadedRecordDot`). But I get a kind error here. I think it would be somewhat straightforward to change `HasField` to be more general:
```hs
class HasField (label :: k) (record :: TYPE record_rep) (field :: field_rep) | label record -> field field_rep where
getField :: record -> field
```
Surprises always lurk, but my instinct is that this would Just Work.
issue