maybeAuthPair, requireAuthPair

`maybeAuth` and `requireAuth` have been reverted to their original
signatures, which assume a Persistent database.  `maybeAuthPair` and
`requireAuthPair` are introduced, which do the same but without that
assumption.
Default type instance for AuthEntity

`AuthEntity` is now a type family associated to the `YesodAuthPersist`
class, so its old type alias definition has now become its default type
instance, which allows recovering the old behavior with minimal
boilerplate: an empty instance declaration for `YesodAuthPersist` makes
a Yesod application written with Persistent work just like before.

Unfortunately, this requires enabling `UndecidableInstances` in the
`Yesod.Auth` module since there is now a nested type family application
(as `AuthEntity` is now itself a type family).

This was tested with the scaffolded application with PostgreSQL, and it
works (given another small change to make it work with Persistent 2 due
to how `SqlPersistT` is now defined).