Add CachedModel base class to cache instances of things.

No expiration checks yet.
Yet.
A better (and actually working) implementation of models cache.

This requires CachedModels to specify their name, as well as
identifiers.
Turn lyrics, tracks and albums into CachedModels.

Hurray!
Fix a typo inside lyrics.js that was causing a bug now that we have cached models.