FacebookT monad transformer

FacebookT auth m a is this library's monad transformer.
Contains information needed to issue commands and queries to
Facebook. The phantom type auth may be either Auth (you
have supplied your Credentials) or NoAuth (you have not
supplied any Credentials).

True if the access token is valid. An expired access
token is not valid (see hasExpired). However, a non-expired
access token may not be valid as well. For example, in the
case of an user access token, they may have changed their
password, logged out from Facebook or blocked your app.

The first step to get an user access token. Returns the
Facebook URL you should redirect you user to. Facebook will
authenticate the user, authorize your app and then redirect
the user back into the provider RedirectUrl.

The second step to get an user access token. If the user is
successfully authenticate and they authorize your application,
then they'll be redirected back to the RedirectUrl you've
passed to getUserAccessTokenStep1. You should take the
request query parameters passed to your RedirectUrl and give
to this function that will complete the user authentication
flow and give you an AccessTokenUser.

The URL an user should be redirected to in order to log them
out of their Facebook session. Facebook will then redirect
the user to the provided URL after logging them out. Note
that, at the time of this writing, Facebook's policies require
you to log the user out of Facebook when they ask to log out
of your site.

Note also that Facebook may refuse to redirect the user to the
provided URL if their user access token is invalid. In order
to prevent this bug, we suggest that you use isValid before
redirecting the user to the URL provided by getUserLogoutUrl
since this function doesn't do any validity checks.

Extend the expiration time of an user access token (see
https://developers.facebook.com/docs/offline-access-deprecation/).
Returns Left exc if there is an error while extending, or
Right token with the new user access token (which could have
the same data and expiration time as before, but you can't
assume this). Note that expired access tokens can't be
extended, only valid tokens.

Get an user using his user ID. The user access token is
optional, but when provided more information can be returned
back by Facebook. The user ID may be "me", in which
case you must provide an user access token and information
about the token's owner is given.