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.
As the talk on this PR is all about coding style, please be consistent with the spaces between arguments, so always add a space after a `,` (comma)