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.
As discussed in IRC, we probably don't want the OrCreate version here just for a getter.

Side note: I can't find any documentation on some of these methods, and Xcode's autocompletion is broken for me for all MR-related code. Sigh.