plugins: Match() should do work, not return regex

This makes it possible to do more interesting things before determining
if a plugin should act or not.
limiting: allow plugins to bypass rate limiting

This will be important for certain longer messages or when we need to
notify multiple parties of an event (e.g. banning someone)
help: preliminary support for refusing commands

This needs to be moved into the configuration stuff, but it's a start.
The idea here is to allow the bot to respond to commands it doesn't
support (my use case is to insult people looking for anime XDCC bots in
our channel).
parser: support parsing host masks for messages

The relevant Mask field was added in a prior commit.

This parses out the mask portion of a message, which is handy for
banning people.
autoban: support banning users based on regexes

This also supports cleaning messages to permit simpler regexes.
Currently supported cleaning functions are "colors" and "nongraphic".
"colors" removes all color code sequences from a message (e.g. ^c[0-9]),
and "nongraphic" removes whitespace (including unicode whitespace) and
non-printing characters (including unicode ones). This is currently
based on the go stdlib IsGraphic and IsSpace functions, which likely do
not cover all of the things we actually would want to remove here.