Add CategoryAfterPageAdded / CategoryAfterPageRemoved hooks
My first instinct was to derive the hook signature from the implementation and
have a generic 'PageCategoriesUpdated' hook that receives the WikiPage object
and two arrays ($added, $deleted). After some reflection I decided to iterate
through each array and call the hook once per category. I like this way of
doing things because a change in page membership could be thought of from two
directions: it is either the category that is gaining or losing a member, or
the page that is gaining or losing a category.
The category name is sufficient for instantiating a Category object without
additional queries being needed, so my preference was to pass objects rather
than string identifiers.
If implementors of handlers happen to be interested in the set of categories or
pages being updated, it is still the case that they only need to write one
function, and track state using a class property.
Change-Id: Ica4c5fb3acdea6c00678ec0794808fa50a1dd39a