Correct logic for short circuit on MultipleChoiceFilter

The filtering in MultipleChoiceFilter is a potential noop. #20 and #44 brought this up as a painful performance hit. 

The logic introduced in response to #20 is not always sound. As per #132, the filter must be required for it to apply. As per #176 and #184, only a subset of choices may be specified. 

This pull request adds a `always_filter` flag and `is_noop` test to MultipleChoiceFilter. 

Since correctness beats performance `always_filter` defaults to `True`. If the developer sets this to `False` a reasonable default implementation of the `is_noop` test is applied. (This includes the fix from #132, and a test for that by @jimpot — Thanks!)

The developer may override `is_noop` to provide their own test. 

* Fixes #44.
* Fixes #132.
* Closes #176 
* Closes #184