Updated to not store empty cache

Primary key queries should not be cached because the record may not exist today but could exist in the future and because the INSERT logic in PICKLES doesn't do any invalidation of the cache.
Created a validation class to handle validation

Instead of making the Module the keeper of validation, moved the actual sanity checks to another class. This makes it stupid easy to use one module's validation (some or all) to validate arbitrary values elsewhere in your system.
Made method public and fixed return
Merge remote-tracking branch 'upstream/master'

Merging in upstream changes