Faster `remove` by using `itertools.filterfalse`, which was added to `compatibility`

Also, a typo (it lied!) was fixed in the documentation of `remove`

By using `filterfalse`, we modify the behavior of `remove` when `None` is used as the predicate.  Previously, `remove(None, [0, 1, 2])` raised `TypeError`.  Now it returns `[0]` (i.e., all false-y values).  If we want the former, we can add a check for `None`.