See detailed commit description

Overhaul / re-org to become more object-oriented. Implemented a runloop
to allow for multiple different actions to be taken in a particular
context. Enabled construction of multiple objects. Only the first one
can be selected, but it can be moved/rotated/scaled while selected.