Refactor note-toggle (part 1)

This PR abstracts and tests wrapping and un-wrapping notes.  Ive also switched the add-class & remove-class functionality to use string operations.

### QA
- Be sure to test the expand/collapse notes functionality fully.
- Ensure create/remove notes work even on multi paragraph notes.
AFAICS it won't do the right thing if you have: `className = "gu-foo"; removeClass(className, "gu")`?