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.
Do we really want getForUrl() to return a set of favicons? Getting an array of favicons vs. a single favicon can cause things to get messy, leading to things like this (arbitrarily using the first item in the array).

I'd probably prefer just storing a single favicon per site as mentioned above, but if we don't do that, can we still make getForUrl() return a single icon that best matches the parameters given to it? For example, the options could include a preferred size.