Add 'with' support to board

Add support for the 'with' statement to board.py.   Using a 'with'
statement guarantees that resources associated with the board
are cleaned up.  The function uninit can still be used as an
alternative (or in addition) to the 'with' statement.
Improve handling of blank and locked Kineits parts

Overhaul handling of blank and locked Kinetis parts.  Attaching to
blank or locked Kinetis parts should now work every time.  This patch
also adds the script 'blank_test.py' to verify the target init
is working correctly with locked and blank parts.
Improve handling of keyboard exceptions

Catch all exception when a problem occurs.  This makes resource cleanup
more reliable and allows KeyboardInterrupts to be caught.  With this
patch you can interrupt any script with Ctrl-C and the console will
no longer hang due to IO threads being left running.
Merge pull request #76 from c1728p9/master

Fix attaching to blank and locked kinetis parts and other things