first pass of a wire class to join terminals

also a fix to object equality checking
recentre terminal on pointer
attempt to provide consistent UI methods for interface

This is unfinished, and needs much more work.

My goal is to have all of the elements that make up the game
state stored in an array in GameManager. After every input event
this array would be iterated through to redraw every element.

To do this, I need to provide an interface method register() for
all element classes, which will create event handlers and DOM elements.

Trying to do this in a quasi-functional manner, by treating the state
object as immutable. On an update, return a new state object, iterate
over the old one to `unregister` game elements.

This unregistering should remove event handlers and DOM elements.

Problems:
1) Unregistering not working
2) Haven't updated wire to this new schema
3) Passing around a mess of pointers between mouseinputmanager and
gamemanager to handle input events. Could clean this up with callbacks?