(bug 1495) Enable message language fallbacks

The core function behind wfMessage() (MessageCache->get()) did not
support full language fallback chains. I have attempted to fix
this issue by precomputing and caching the fallback chain and then
looping over all possible combinations.

Performance wise, using the 'ab' language ('ru', 'en' fallbacks)
MessageCache::get (Averaged over runs and calls)
New Code: ~8.5% 110us/call
Old Code: ~6.5% 90us/call

Now with unit tests! :)

Change-Id: Iaaf6ccebd8c40c9602748c58c3a5c73c29e7aa4d