Add RedirectFunc to Options for smarter redirects

RedirectFunc is a `func(*http.Request) string` that allows the user to
generate a redirect URL based on the request. This enables redirection
to relative paths, without necessarily knowing the hostname or URL
scheme in advance.

RedirectRelativeFunc() is a convience function that returns functions
suitable for use as a RedirectFunc. The funcs it returns redirect
requests to a relative path, maintaining the URL scheme, port, and
hostname of the callback request.