Feature: fuzzy regex support

Fuzzy pattern matching. Activated in a plugin by setting a new kwarg, `allowed_typos` in the `@respond_to` decorator.
The `allowed_typos` value may be any float, but behavior only changes at discrete levels of 0 (exact match), 0.3 (single character deletion), 0.6 (single character insertion), 1.0 (for single insertion, deletion, or transposition), 1.3 (for 1 insert/delete/transpose and 1 delete), ...
For finer-grained levels of cotnrol, the standard `regex` package syntax for fuzziness is also supported, if `allowed_typos` is set to 0 (the default). E.g. '(^hello$){i<=1,d<=1,e<=1}', and multiple regex patterns may be supplied in a list of patterns within the `@reply_to` decorator
Nonfuzzy patterns/plugins should still work, as long as they used named (and not number-indexed) groupings
   
    * Unnamed groups referenced by number/index fail. they match but then the retrieved group string is off by 1 in the index. This feature can be fixed by applying a global group to both fuzzy and exact patterns and overriding the search method to decrement the groupings in the returned list by 1
    * Any fuzziness/typos in unnamed/uncaptured groups (like "(set|new)" in set_topic) will not match
    * Fuzziness only applies to the first unnamed/uncaptured group (group 1 not group 0)
    * regex package is used in place of re throughout all plugins and mixins, even those not using fuzzy features
    * The FuzzyMixin is CRUFT, but may be useful in the future
    * Documentation written before implementation, so needs to be updated to accurately reflect behavior