Instantiate rule code_paths at load-time instead of consume-time.
Cache the results of rules for each message.

..then dispose of that cache once we're finished with each message.

A typical rule is "is this a koji message?"  Say we have 500 users, for every
message that comes in we're going to call that function 500 * 2 times (once for
email and once for IRC).  This builds a little cache at the beginning of
processing each message where we can store that result and re-use it for each
user/context.  We then throw it away and start over when we're done processing
that message.
Merge pull request #10 from fedora-infra/feature/optimizations

Cache the results of rules for each message.