chore(cache): reworks ElggMemcache and its core usage and adds a null cache to simplify logic

The goal here was to leave the ElggMemcache API as is, and simplify its use in core without requiring a radical (bug inducing) refactoring.

The big benefit here is that, since this uses a Stash pool internally, a dev could easily set this up to use APC, files, or any other Stash storage model.
Something to think about: How do we let a dev set this to a custom \Stash\Pool early enough to have it used during boot? Maybe in settings.php:

```php
$CONFIG->memcache_stash_pool = function () {
    // ...setup driver
    return new \Stash\Pool($driver);
};
```