Allow recent discussions to be filtered by an array of categories.

This feature allows plugins to set an array of category IDs that will filter the discussion list. By default the recent discussions are filtered by categories the user has permission to and is watching. If a plugin sets an array of categories then they should still be limited to that user's permission, but should otherwise be filtered properly in the list.

The main changes to the low-level functionality has to do with the announcements. Testing should be done with both kinds of announcements and memcache.