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.
I think I'd like to see the body of this conditional moved to a method for clarity of `find_by_pk`