Extending out the Keyboard Interface to allow for separate
implementations of keyboards so that they can fire their own events for
display/recording information.

TODO:
Need to decide whether to split the attributes/settings/renderables into
a seperate mutable classes or keep them contained in the keyboard
classes. Splitting them out may give us advantages in readability and
allowing for easy manipulation of the settings.