[performance] MLocale: cache the MCollator

Building a new MCollator for every indexBucket call was expensive
because it sets up all the collation tables etc and indexBucket
is called by libcontacts for every name.

This commit changes MLocale to keep a pointer to an MCollator,
and reuse it until the locale changes (and caches are dropped).