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-.
Yeah. My general operating mode is "If you're using instanceof it should be replaced by some form of polymorphism", so I flagged the few places that I do it, in case other people agree. If not I didn't want to overengineer things.