Allow GDB server to recover from SWD faults

Add a new exception type which gets thrown when an  SWD fault occurs.
Modify GDB server to catch this exception and return an error to
the gdb client.  This allows memory that can be turned off, like
certain peripheral memory, to be accessed without the risk
ending the debugging session with an SWD fault.

This patch also adds code in cmsis_dap.py to clear the dap STICKYERR
flag when  a SWD fault occurs.  If this is not done all future memory
accesses result in an SWD fault since the error bit remains set.
Add with statement to prevent hang in gdb_server

Guarantee board resources are cleaned up in gdb_server.py by adding a
with statement.  If an exception occurs the board will get closed so
the console will not hang.