Move misplaced functions into their proper module
Remove unused datatype
Reorganize functions,  and optimize fieldWith
Define PGArray newtype instead of using Vector to represent Postgres arrays

Using Vector, it's awkward (and perhaps less efficient) if you want to
use a regular Haskell list in a record:

    import qualified Data.Vector as V

    data Widget = Widget
        { foo     :: String
        , bar     :: String
        , baz     :: String
        , reports :: [String]
        }

    instance FromRow Widget where
        fromRow = do
            foo     <- field
            bar     <- field
            baz     <- field
            reports <- V.toList <$> field -- Postgres array
            return Widget{..}

Moreover, it's not safe.  Suppose in the future,
postgresql-simple serializes Vector and Map using JSON so they stack
properly (PostgreSQL arrays can't be nested; they're
multi-dimensional, like matrices).  Code that relies on Vector being a
Postgres array will break at run-time.