OOPifying CentralNotice Banner Class

A near complete rewrite of the banner class. This is part 1 which
attempted to make minimal changes to the outside consumers of the
class.

Some important things have changed:
- Banner logs will now only log the 'end' settings because I no
  longer keep track of the original settings and making another DB
  call to get the old settings seems silly.
- Instead of saying a banner is fundraising or not, we will assign
  a category to it. The UI and JS are not yet ready for this but
  this patch deprecates the cn_templates.tmp_fundraising column
  in favour of cn_templates.tmp_category.
- A new variable has been introduced to control when the Translate
  Message Group job gets fired. This attempts to solve issues where
  the translate job takes too long and the save() request times out.

Off the top of my head the following still needs to happen:
- Updating the UI to use the new methods
- Allow usage of tmp_category in javascript
- Rather large updates to the Special:BannerLog
- Creation of CampaignBanner and HistoricalBanner subclasses
  which will hold moar properties :)
- MOAR TESTS!

Change-Id: I13e39ca1c56e66f960501836d86e8f3af07da93f
Merge "OOPifying CentralNotice Banner Class"