Improved panel management - prevent resizing panels larger than available space

Fixes another part #2015 by maintaining panel max resize limits based on currently available slack space (i.e. space used by the editor area).  This fixes [part 1](https://github.com/adobe/brackets/issues/2015#issuecomment-10528269) of the 4-part list of issues there -- when dragging a panel to fill the whole UI, you can't overshoot and send the status bar (or other panels) sliding off the bottom of the window.  And it gives us a clean foundation to build the remaining fixes on.

This also enables a cleaner fix to #3371 -- see pull #3931 which is based on this branch.

Here's what's changed:

- PanelManager provides APIs to create panels below the editor area. JSLint
and Find in Files now use these APIs.  (Find in Files panel UI is now moved out of main-view.html into a template).
- Move editor-holder ht calculations from EditorManager to PanelManager
- EditorManager listens to PanelManager for resize notifications. PanelManager
listens for window resize (moved from EditorManager) and for Resizer events
on all bottom panels. The old EditorManager.resizeEditor() API is still used
for edge cases such as status & search bar show/hide, extensions that add
fixed top panels, and extensions that don't use Resizer APIs to hide/show
panels.
- Since PanelManager is listening, Resizer no longer pings EditorManager
directly about show/hide/resize.  (This would let us use Resizer as a generic splitter widget in other parts of the UI if needed).
- Resizer emits events to notify PanelManager about any panels it may have missed (legacy extensions that add panels via
Resizer instead of PanelManager).
- Add max-size support to Resizer.  Change Resizer min/max limits to operate in terms of panel outer height.
- PanelManager updates all bottom panels' max sizes when anything is resized/shown/hidden.