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.
I can imagine us passing this into places that expect a GenericCache that try to set a value, and nothing will happen. Maybe add an assertionFailed() as the setter body?