model caching

Adds basic model caching functionality to active record. To enable caching for a particular model, set a static variable called "cache" to true in your model subclass, and configure a cache adapter. 

This is my third attempt at putting a pull request together; apologies for my poor git skills. Please ignore the previous 2.
Can you rebase without whitespace changes? I know there are problems with whitespace in this code base but that should be done automatically and globally in a single PR.