A lot fixes for NRF51822. Make pyOCD usable with nRF51 CPU.

- add options for gdb_server.py: SoftDevice flash protection, don't break at hard fault handler, correct resume procedure, add extra monitor command.
- mask interrupt when stepping. Required for NRF51. Otherwise GDB server can't step if any interrupt occured during halted state. In case of nrf51 with enabled BLE it happens all the time.
- fix nrf51 reset(), resetStopResume() functions.
- add nrf51 specific gdb_server server.
>How does gdb_nrf differs from the generic gdb? All those new options can be added to the generic demo. I don't see any specific code here.

You are right. There is no specific code in gdb_nrf51822.py. Do you think it's better merge it to gdb_server.py?

> The conversion to hex integer for flash protect, should happen inside the gdb, not in the application layer. This will enforce all people to do conversion in the application layer?

GDBServer constructor requires integer type for TCP port number and flash_offset.
If you think those parameters should not have strict type I'll add something like below code to gdbserver.py:
 
```
        if 'flash_protect_offset' in options:
            if isinstance(options['flash_protect_offset'], str):
                int(options['flash_protect_offset'], 16)
            elif isinstance(options['flash_protect_offset'], int):
                self.flash_protect_offset = options['flash_protect_offset']
            else:
                self.flash_protect_offset = 0
        else:
            self.flash_protect_offset = 0

```