first start at refactoring the subscription system BROKEN

This introduces a class for nicer wrapping and easier testing. Some
functions were changed to provide nicer APIs (no throwing around of
unescaped regexps) and to simplify things (hopefully).

The refactoring isn't completed yet, so this will break the subscription
system.

The goal is to move as much subscription related stuff to this class as
possible. Currently there is some code in lib/exe/indexer.php and maybe
elsewhere (common.php?). Additionally everything should be covered by
tests. A few tests are included here already.
handle empty changelog in getRecentsSince()
more subscription refactoring BROKEN

now the actual sending of bulk messages (digest, list) is reimplemented
and partially tested.

Still not complete
added list test
subscription system should work now again

This readds the last part of the subscription system: the normal "every"
subscriptions.
correctly check if subscriptions are enabled
fixed subscription management

now adding and removing subscriptions works again
initialize new subscriptions with current time

We don't want to create a bunch of mails whenever a namespace is
subscribed. Only changes *after* the subscription should be considered.
This patch adds the timestamp to "every" style subscriptions as well,
though this data is ignored.
minor cleanup
consolidate more notification code in subscription class

This is untested and probably broken currently
Merge branch 'master' into subscription

* master: (175 commits)
  some coding style improvements
  added .idea project folder to gitignore
  use correct setUp method and parent calls.
  Correct German plugin manager translation (download != install)
  correct return in sendDigest()
  Fix case-insensitive match in ACL checking
  GeSHi update to 1.0.8.11
  ignore empty header on mail sending
  remove empty BCC/CC mail headers
  Galician language update
  some welcome page changes
  Combine subsequent calls to strtr into a single transformation
  changed semicolon to colon in link to welcome page to make it less confusing
  fixed wrong sidebar showing in namespaces when sidebar is disabled
  Typo fix for TL;DR
  removed a bunch of outdated and irrelevant networking acronyms
  added another place to look for logo to make it more consistent (FS#2656)
  French language update
  Czech language update
  compat js findPosX/y more closely mimic historical function
  ...

Conflicts:
	inc/auth.php
	inc/common.php
	inc/subscription.php
	lib/exe/indexer.php
fixed merge error in inc/auth.php

merged the wrong change here
moved registration notification to subscription class
added compatibility function
some reformatting
allow template unit tests
Traditional Chinese language update
show filesize of local file links in tooltip
Check search limit depth with an inequality

Otherwise, when we check for equality, the test fails if the search start beneath
the max depth.
Eg: if I have the page ns1:ns2:mypage in my wiki, and launch the xmlrpc query
getPagelist("ns1", "depth => 1"), without this patch, it retrieves mypage
If depth option is set to 0, we should recurse forever

At least if we want to be consistent with search_universal