Minor changes to hashing and cache aging algorithms.
Minor changes to hashing and cache aging algorithms.

Hashing was changed slightly to exploit the fact that a significant amount of real world JSON strings / keys will have a high percentage of ASCII characters.

Cache aging was modified to use an AIMD (additive increase, multiplicative decrease) policy.  When an item is found in the cache, its age is incremented by one using saturating arithmetic.  Ages are "quasi-randomly" aged using unsigned right shifts, or in other words its age is divided in half. Since ages decrease far more quickly than they increase, the cache can quickly adapt and converge on the "hot set".

Jawbone/apptentive-ios,Empora/JSONKit,Jawbone/apptentive-ios,ALHariPrasad/apptentive-ios,hibu/apptentive-ios,sahara108/apptentive-ios,EadkennyChan/JSONKit,sahara108/apptentive-ios,ignazioc/JSONKit-NoWarning,ALHariPrasad/apptentive-ios,apptentive/apptentive-ios,apptentive/apptentive-ios,hibu/apptentive-ios,hibu/apptentive-ios,firstp2pdev-public/JSONKit,apptentive/apptentive-ios