Bug fixes and front-end refactor

Most of this pull request is a refactoring of the frontend code, but there are a few bug fixes that will be highlighted inline.

**Things that were refactored**
* `Tossboss-drawer` was split into `tossboss-drawer`, which deals with the UI logic, and `tossboss-detail-view`, which handles the templates and the display logic for the Pig Data.
* `Tossboss-main` was split into `tossboss-main`, which sets up the page, and `tossboss-modal`, which deals with the modal logic.
* Certain functions in the now `tossboss-detail-view` (previously `tossboss-drawer`) are in `tossboss-graph-model` because they pertain to collecting and aggregating data.

**Bugs Fixed**
* There was a bug where the `clickEdge.tossboss-graph-view` event was being fired multiple times on click after switching between the unoptimized and optimized view a couple times. Turns out the click callback was being registered multiple times.
* After refactor, the code that was setting up the script DOM elements was in `tossboss-script` instead of `tossboss-drawer`. This caused a bug where the drawer's initializer would set the width of the script element to be 0 before `tossboss-script` could initialize.
* `tossboss-graph-view` displayObject method was getting the relative points by relying on the context of the page. The new method is more modular.