Refactor into a Intl format memoizer

**This is a major-version level refactor.**

This refactor proposes a shift in the role of this package in the overall FormatJS system to a memoizer of `Intl*` format instances.

These change mean that this package no longer has dependencies on the `intl-*` packages, as the template/component integration layers should be the packages with those dependencies.
So `getCacheId` returns `undefined` if there is no JSON API. A couple of lines below you check if you got a `cacheId` before looking in the cache, but here you seem to just look for it in `cache.undefined` when there is no JSON.