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-.
A good question and possible design question. 

Currently (in the normal app) you search by searching over the actual displayed string value, and any/all matching is done straight against those strings. 

In the async mode, you can only search against the underlying "data" representation that gets cached. I think this is how we will want/need to move to doing this long term (especially with things like the GridView, since you don't want to match against the field tags), but I didn't want to change the normal behavior for current use cases.