[Design] Rework panels to increase flexibility of panel layout

On-going work to make panel layouts more flexible.

As opposed to #1504 (similar work by autarkper), panel code is all centralized at panel.js instead of layoutManager.js

TODO:
- Allow users to drag panels to move them
     - Add panel option
     - Remove panel option
     - Check if panels already exist at position during dragging
- Cinnamon.Recorder hardcodes gsettings key panel-bottom-height
- Status dispatcher requires panel actor
- Support for -1 as index of bottom monitor.
- Use panel edit mode for panel dragging