Small fixes to redis cache driver and cache_lib.
Prototype of limit set caching.
Prototype tested, first tests work. Not too shabby...
Removed debugging code.
After a bunch of tests, found a small cache busting bug, fixed it.
Simplified the update logic when it comes to only updating fields in the source and busting cache that have actually been changed, and nothing else.
Added insert/inserts to limit dao base class.
Also added $reload_model_from_source to dao and limit dao base classes, this is necessary to deal with data sources that update the content after it has been inserted/updated (eg, timestamps). This option is off by default since it has the extra overhead of reading from source immediately after writing.
Upon insert/inserts/updates the record is immediately cached to avoid any race conditions should there be a master/slave source set up.
Forgot in the last commit to do this: on update the record is immediately cached to avoid any race conditions should there be a master/slave source set up.
Added expire commands to cache drivers, this will be used for a race condition bug I've found in cache_lib.
Changed record_limit_dao to use the new 'expire' cache busting strategy to help avoid a slave lag race condition.

Removed multi() and exec() from redis cache driver set_multi()
Removed old redis 2.2 code.
Fixed bug (location of cache_delete_expire_ttl config setting in entity_config).
Removed php 5.4 backwards compat code (since ubuntu now ships php 5.5 packages).
Added new optional $after_cache_func param to cache_lib::single() and cache_lib::multi() to be run the newly cached records have been set.
Applied expire() to entity_record_dao::_delete() instead of just delete();
Added entity_record_limit_dao::_by_fields_offset_multi(), not fully tested yet.
Still missing entity_record_limit_dao::_set_delete_limit_cache_lists_multi() as well as entity_record_limit_dao::by_fields_offset_multi().
Added test_lib::timer() function for timing tests.
Added entity_record_limit_dao::_set_delete_limit_cache_lists_multi()
Updated cache_driver::list_remove() to accept an array or a single entry of keys to remove.
Removed entity_record_dao::_by_fields_select() as well as supporting functions from record dao drivers, since this function does not belong.
Fixed bug in cache_lib list_add and list_remove batch operations... PHPRedis has poor support for a valid redis call (adding/removing multiple values to/from a list in one operation).
Corrected bug in cache_lib::multi's $after_cache_func execution. It was not passing the correct array of cache keys and values.
Simplified the entity_record_limit_driver class by having it extend from the base entity_record_driver classes, this way they can use the standard by_pk, by_pks, insert, update, delete etc etc functions.
Finished entity_record_limit_driver_mysql by adding by_fields_offset_multi().
Created entity_record_limit_driver_mysql class, not yet tested.
Removed limit() and paginated() functions from entity record drivers.
Shifted some of the load from the source (eg, SQL) by doing the reverse lookup at the app level in the entity_record_limit dao drivers. There still might be some optimization to be done here.
Fixed mistake in LIMIT/OFFSET portions of SQL queries in previous commit.
Fixed mistake in LIMIT/OFFSET portions of SQL queries in previous commit.
Removed entity_record_limit_driver::by_fields_after() and entity_record_limit_driver::by_fields_after_multi() since they aren't feasible (useful) when it comes to arbitrary order by fields.
Added cache_list_engine option to entity config, now list based entity caching can be stored in a separate engine to the general caching engine. This means you can use memcache for caching sets of PKs, and keep track of which fields those sets' keys belong to in redis.
Prefixed flash cache with "http_flash".