Add model caching

Adds model caching to active record. This means that individual model records are pulled from cache when available; the results of queries in general are not cached. To switch caching on, set a static member called "cache" to true on your model subclass.