
Problem Definition
------------------
The task is to write a user interface module for an embedded device.  

Interrupts:
 * The user interface is responsible for initializing the display.
 * The user interface will register an interrupt handler for GPIO input 2 (a 
   push button).
 * It will be possible to register a callback function for button presses. 
 * When there is no callback function set the irq handler will increment a 
   missed irq counter.  
 * When the interrupt occurs the handler will schedule or execute the button 
   press callback if there is one registered.
Output:
 * Tasks can write messages to the user interface to be output on the display.
 * The display is line oriented; when the last line of the display is written 
   the user interface is responsible for clearing the display.
 * The display is 26 characters wide.  Any string longer than that must be 
   truncated before being sent to the display. The string must be null 
   terminated and thus maximum 27 bytes long.
   
 * BONUS: Have the display be scrolling, i.e. when the display is full, the 
   previous lines must be shifted up one and the new line written in the bottom
   line.  
