Add an LRU cache and use it for fonts and font groups

We hit this cache _a lot_.