Add panel API

The implementation of #3680:

```coffee
atom.workspace.addViewProvider
  modelClass: ProjectBrowser
  viewClass: ProjectBrowserElement
```

and 

```coffee
panel = atom.workspace.addLeftPanel(item: new ProjectBrowser)
panel.hide() # Hide the panel
panel.show() # Show the panel
atom.workspace.addRightPanel(panel) # Move the panel to the right
panel.destroy() # Remove the panel entirely
```

TODO

* [x] Create `Panel` model
* [x] Create `PanelElement` custom element
* [x] Get basic panel addition working
* [x] Add panel container model / element
* [x] Add panel visibility control
* [x] Example package exercising for visual check
* [x] Implement priority system
* [x] addLeftPanel() 
* [x] addRightPanel()
* [x] addTopPanel()
* [x] addBottomPanel()
* [x] Tinker with a package using this api (status bar)
* [x] Docs
* [x] Deprecate the old stuff

Closes #3680
It's looking more and more like it might be worth it to have an `atom.views` global to deal with this so models can just register themselves at evaluation time. I was going to suggest having the `PanelContainer` self-register in its constructor but then I realized there were multiple. Tying the view registry to the workspace explicitly seems to be creating complexity in situations like this one.