Add request filters for checking a request needs to be pinned

Move original request method check logic to a new module named `filters.py`, users can specify a list of filters named `settings.MULTIDB_REQUEST_FILTERS`, the default is `('multidb.filters.request_method_filter',)`.

I think it is necessary when the POST method does not always mean it should be pinned.
Let's allow shortcutting this by putting callables in `REQUEST_FILTERS`, i.e.:

```python
filters = tuple(f if callable(f) else import_string(f) for f in REQUEST_FILTERS)
```

Then we can just import the default filter instead of the `import_string` call, and people could drop in callables in the settings if they want to.

But while we're here, `filters` is a global variable that we use repeated, and set-up at import time (which I don't love) while `REQUEST_FILTERS` is an intermediate variable we use once.

The way I see it there are two options, one is more correct but slower, the other is less correct but faster:

1) More correct but slower: calculate `filters` within `check_request`, every time it's called. That lets tests, or anything else, override `REQUEST_FILTERS`, and makes `REQUEST_FILTERS` match the convention of `ALL_CAPS_IS_MEANINGFUL`.

2) Less correct but faster: swap the variable names so tests et al. can override the actual tuple of filters that gets used, and we indicate that the setting is only a temporary variable. That would look like this:

```python
filters = getattr(settings, 'MULTIDB_REQUEST_FILTERS', (request_method_filter,))
REQUEST_FILTERS = tuple(""" ...as above... """)
```

Given that we're misusing settings throughout here, and we should fix that all, if you want to go with option 2 for now, that's fine.