MDL-38661 Course: Add JS category expander.

This adds a category expanded which:
* fetches child content in a category tree if it has not already been loaded;
* toggles relevant classes on the category node to show and hide child content; and
* applies appropriate animations to improve user experience.
Move to lazy laoding to reduce upfront cost
Fix category expansion to now show courses etc
Move to using constants
MDL-38661 Course: Remove old Expand/Collapse all handles

These don't make as much sense when you do not have a limit to the number
of categories which will be shown at a time.
MDL-38661 Course: Refactor categoryexpander to reduce code dupe.