Add much-needed comments explaining the abstractions in lib/cache.js.

Closes #43.