Added sanity check if logging was enabled

No more wrapping calls to the Log class with a check if it's enabled.
Caching where primary key in ( ... )

Caching was limited to single row selects against the primary key. Expanded to include cache checking and storing when selecting multiple values against the primary key. Does not work on any other row due to the fact that some rows may have duplicate values and the mapping could get borked pretty quick.
Removed unnecessary sanity checks when calling Log
Moved default cache expiration to 1 day

Not quite ready to make the jump to no expiration, but 1 day has been serving me well for over a year now.
Added arbitrary cache usage by key.

Pass a Model an optional second or third parameter to force the Model to check the cache before running the query and stashing the results in the key for future queries.
Updated checks for exactly false.

Fixed some issue withe the sanity checks if the cache results.
Added utility method to extract values from field

Pass it a field name, it'll return an array of all of the values form that field.
Sort class!!~!
moved some stuff around
merged in upstream changes