new abstraction for drawing Things

pretty rough but getting closer to a reasonable amount of encapsulation
added a tick() function, rudimentary input