Array -> Vector
store viewports in a vector
Input refactor

Touch input passes through the app, each viewport, and
each active mode, and can be intercepted anywhere along the way.

Each mode has its own TouchInput instance which dispatches touch
input on the display list by default