#28709: Improve/introduce Customizer JS models for Controls, Sections, and Panels

https://core.trac.wordpress.org/ticket/28709

 - [x] Re-sort controls, sections, panels when their priorities change
 - [x] Toggle visibility of section when all controls are removed or become in`active`
 - [x] Make sure that controls can be moved between sections purely by changing their `section` property.
 - [x] Introduce a `$type` for Customizer sections and panels, and let there be associated constructor overrides in JS.
 - [x] Incorporate all accordion logic into the Customizer `Section` and `Panel` models.
 - [x] Hide/collapse section/panel when all children are removed.
 - [x] This should result in the colors section and wigets panel being hidden, but it's not sticking right now: `wp.customize.section( 'colors' ).active( false )` and `wp.customize.panel( 'widgets' ).active( false )`
 - [ ] Make sure that accordion changes continue to work with Widgets, where dragging allows two sections to be open at the same time (extend API to allow multiple sections to be opened concurrently).
 - [ ] Allow sections, controls, panels to be deep-linked. 
 - [ ] Implement `focus()`. Widgets should be updated to use this as well. Focusing on a control should cause a containing section to be expanded, as well as its containing panel. See [#29529](https://core.trac.wordpress.org/ticket/29529).
 - [x] When reordering widgets in a sidebar, update the `priority` state in conjunction with the movement of the DOM element, or the DOM change will be lost. 
 - [x] Introduce `active_callback` to Panels and Sections.
 - [x] Use Section `active` state instead of using sidebar_widgets control `active` state change to manipulate UI.
 - [ ] Add unit tests for JS models.
 - [ ] Use `onToggleActive` or `onActiveChange` instead of just `toggleActive`. Same goes for `expanded` state.
 - [ ] Fix mispositioned panel contents when the parent section siblings' active states change, i.e. due to navigating around in the preview when the panel is open. See https://github.com/xwpco/wordpress-develop/pull/36#issuecomment-60266555.
Just want to note that this is probably the only accordion class that we can remove due to heavy CSS reliance on `.accordion-section` (we could fix it for core, but there's a reasonably high likelihood of breaking plugins). Everything should be only `control-section`, `control-panel`, etc., but I'm not sure we can drop the accordion ones for back-compat, thoughts?

This also directly relates to the plan to eventually change the behavior of sections to be more like how panels work.