ChangesListSpecialPage: Implement doMainQuery()

Here SpecialWatchlist and SpecialRecentChanges are different enough
that I think it's clearer not to make them call parent; I just cleaned
them up a little and extracted the common parts to
ChangesListSpecialPage.

Change-Id: I3b90e9a0d5017f61f5c50c6c6b35b2876c9644ee
Merge "ChangesListSpecialPage: Implement doMainQuery()"