Fixing #383 - opening an app from within another app causes error

* The bug was within the redrawing aspect, e.g. it assumed there
  is always just one app that gets redrawn. Then it registered
  callbacks for both apps. As soon as one app gets closed and then
  an event triggers redrawing the error was thrown because it is
  still referencing the closed app. Therefore I added unless
  app.disposed? in there.
* Also rewrote the redrawing aspect to be a class (less global stuff)
* also added proper unregistering of opened apps