Use breakpoint to capture hardfault

Original gdbserver.resume operation halts target constantly to check if hard fault happens, which slows target execution significantly.

This change set breakpoint to hardfault, if breakpoint available. Thus pyocd can avoid interfering target execution.  It falls back to original scheme with an info message if all breakpoints are used up.

This change speeds up lpc1768 execution with pyocd by 2x.