Centralize modal behavior into Marathon component

* Remove NewAppButtonComponent; it’s just a simple button
* Create “Marathon” component, which is the root of the application
* Move control of the new app modal into the application rather than
  the button (a button shouldn’t own a modal)