Major refactor of middleware and mobile detection.

This change makes a major refactor to the middleware and mobile
detection code.  It eliminates the MobileDetectionMiddleware function.
The detection code from that middleware has been moved to a new
function, django_mobile.detection.detect_mobile.  The
SetFlavourMiddleware now always calls set_flavour to set a flavour,
first checking for a flavour specified on the request, then for a saved
flavor associated with the request, then using an optional flavour
detection function, and finally falling back to the default flavour.

A new setting, FLAVOUR_DETECTION_FUNCTION, was added, defaulting to
django_mobile.detection.detect_mobile.  This function specified by this
setting is used by the SetFlavourMiddleware to detect the flavour to use
for a request.

The get_flavour function was also refactored so that calling set_flavour
with permanent=False still affects the value returned when calling
get_flavour with the same request.
Use weak reference for thread local request.

By doing so, we avoid using a request once its request-response cycle
has ended.
Speed up mobile detection.

* Don't use re.IGNORE_CASE - instead use .lower() on the target string.
* Use simple in/not in tests instead of regexes for simple containment
  tests.
* Simplify the generated regexes slightly (don't use unnecessary
  non-capturing parentheses).
Bump version.