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. 

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?