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.
Since we only return after a cache hit, we lose the benefit of an LRU cache for cache misses. Have you considered restructuring things a bit to remove the default cache, and instead having the master cache update the LRU cache with the default item for misses?