Add build & upload support for Arduino Teensy

My commit messages give more technical details, but in essence, this patch allows ino to build and upload projects for Arduino Teensy boards. I avoided changes that would obviously break other boards, adding exceptions specifically for the Teensy boards.

There are two small changes to argument handling in ino build: the build chain option defaults are now overridden by settings in boards.txt (eg. teensy3.build.command.make), and the --menu option allows command-line selection of build options that would typically be presented in drop-downs in the Arduino IDE. --menu's argument is a comma-delimited list of colon-separated key-value pairs (eg. "k0:v0,k1:v1,...") which select options for menus found in boards.txt (eg. "usb:serial" selects teensy3.menu.usb.serial), and the contents of these are merged into the board dictionary, making them invisible to the program after argument processing.

ino upload's changes are much simpler: all I did was add an exception for teensy boards which uses the cli uploader (teensy-uploader-cli) instead of avrdude.

Best wishes,
-Joe Doyle (Ginto8)