Revised the LCD draw code to buffer to RAM

LCD draw commands are now written into RAM.  Screen updates are done on
demand and once a second.  When holding down the second to rightmost
button on the bottom row, the LCD gets messed up usually.  The 1 second
redraw corrects this.  I'm guessing the corrupt LCD graphics problem is
caused by a CPU loading issue that affects the software UART.  Rather
than fix the issue I'm just going to work around it by redrawing the
screen.
Merge remote-tracking branch 'origin/master' into v1-dual