Vinyl: Records in Haskell & Type Theory