Decouple YesodAuthPersist from Persistent

Hi!  This is the change described in <https://groups.google.com/d/msg/yesodweb/HDd01ymvE5Y/yMRk9UDSF-sJ>.

I had some trouble getting it tested.  What’s the preferred way to get development versions of the Yesod ecosystem building/running, by the way?

The versions of the scaffolded site that use Persistent will need an extra `instance YesodAuthPersist App` in `Foundation.hs` if this goes in.
The problem with keeping the `Entity` type is that

    data Entity entity
      = Entity { entityKey :: Key entity, entityVal :: entity }

and

    newtype KeyBackend backend entity = Key { unKey :: PersistValue }

and this is tied directly into Persistent.  The main goal of this change is to ease integration with other database libraries, with Groundhog as a specific goal in mind, and Groundhog of course has its own `PersistValue` type.

What might be a good way to resolve this?  Would it be okay to give `maybeAuth` a signature similar to the default for `maybeAuthId` and so keep it bound to Persistent’s types (including `Entity`), and providing an alternate `genericMaybeAuth` (to take a naming cue from `Data.List`, but there’s probably a better name?) with the tuple, or somesuch?