User Interface: Added a `tag` field to buttons.

The tag is passed on to listeners when their callback is called.
This allows multiple buttons to use the same callback, but have it
so that their respective calls are differentiable.
User Interface: Button constructor now takes dictionary

There were too many properties to not label them, now a Button must
be constructed like so:

    new Button do
      name: \name
      tag: 0
      size: 20

Also fixed the slight offset the typesetting added to the label that
made it appear to sit slightly lower than central.

Now that parameters come from a dictionary, must change `enabled` to
`@enabled` as the former is no longer available.
User Interface: Button now decides size by width, not font size.

This makes mking all the buttons the same size *a lot* easier.

Additionally, added the `leading` property to PointText. This deals
with the offset from center problem.
User Interface: Made Button#highlight, Button#reset public.

They are needed to implement toggle buttons.

Additionally, added the ability to trigger a button without notifying
(For the usecase where the listener is themselves triggering the
button from the callback function).
User Interface: Adding Buttons to App

Added the `Add Node` and Mode Toggling Buttons plus the stub functions
for their callbacks.