Refactored code, so that sidebar cleans up after itself and is reusable

Example:
```
sidebar.addTo(map);
sidebar.removeFrom(map); //events still registered, memory leak
sidebar.addTo(map); //container created again, events registered again
```

 - Turned off events in removeFrom to prevent memory leaks
 - Refactored container setup into initialize, to allow multiple calls to
   addTo and removeFrom.
 - If removeFrom is called while the sidebar is displayed, the sidebar will
   hide itself first to restore map pane as well as prevent itself from being
   displayed by default if addTo is called.