Added observers for events.

Observers should accept 3 arguments: event type, pin index, and
data.  Right now the event type can only be `'button'`.  The data
for button events is the new button state (1 for pressed, 0 for
unpressed)