Asynchronous Cached Entities

Implementation of entity caching for flagged indexes on detail lists. 

For valid <detail> definitions, instead of a synchronous entity loader, an asynchronous factory is used which does not require loading the full entity. The indexed properties (those available for searching and sorting) are evaluated in a lazy manner. 

Additionally, the properties are cached where valid, and that property cache is loaded upon request in order to prime the lazy nodes. 

Searching on the entity screen is also now asynchronous to allow users to type long strings without facing the delay of performing the search across the entity set.

X-Requested: CommCare, JavaRosa

Relies-on: inline_entity_tiles, feature_flags

NOTE: This update also involves updating our version of the SQLCipher library, which will introduce the need to swap the binary libs back and forth when going between 2.17 and 2.16-.
On J2ME we do our class hashing with a custom MD5 lib that sucks. This is migrating that back out to using the Apache libs that are waaaaaaay faster. 

Before I had only replaced one of the places where we were doing this hashing. I pulled it out here so we could use it in another place or two which speeds up the object serialization process significantly.