Refs #2567: WIP on Collection API

DO NOT MERGE. I just cleaned this up and would just like to get some eyes on it before I move much farther. 

[Design Doc](https://docs.google.com/document/d/1lGFGs_-gQg38pRD7EDdHm_AQ_8Fhb9iXa02Ecb66mOo/edit?usp=sharing)

The plugin API is mostly exposed via the top 4 functions [here](https://github.com/mrclay/Elgg-leaf/blob/0d602e1498e3c423c27d41ad36871812f53dbee1/engine/lib/query_modification.php).

2 functions return an Elgg_Collection object, which can be used for changing the visibility of a collection (probably rare) or accessing the items (via a separate Accessor object). I really don't want to convert all those APIs into global functions, but the 4 I added are OK I think.

For most requests only the query modifier would be needed to apply a collection to elgg_get_entities() options.

There are some core actions that deal with modifying the collection items, but no UI or views yet for doing so.

Need help coming up with a general use plugin that would exercise this. Any ideas?