EDITING: Add Subcollection editing and Improve D&D Performance

Add functionality to add new modules and subcollections to a collection, as well as search for and add existing modules.

Also improves drag and drop functionality and performance, allowing nodes to be moved before or after another node, or inserted into a subcollection (even if that subcollection is empty).

Tasks:

- [x] Move all relevant drag and drop code into draggable.coffee
- [x] Allow nodes to be inserted before or after another node, or added to a subcollection, depending on the position of the cursor over the target.
- [x] Add support for adding subcollections to the table of contents
- [x] Allow subcollections to be renamed