Bug 1112376 - Initial cache implementation

This implements a cache implementation for favicons. All of basic favicons then basically becomes accessors into the OrderdCache implementation. I also made a DefaultCache that always returns a default value.

There are some strange caveots with generics and core data in here. I've tried to note them.
Nit: prefer let over var