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.

**Also**:

Instantiate rule code_paths at load-time instead of consume-time.