Fix hidapi interface

Two major updates:
1) Fix hidapi interface. Return all available boards. Use USB path instead of serial number to identify board. Without this fix hid api returns randomly selected board. Now it provides all connected boards and is compatible to select one by boardId.

2) Update flash_nrf51822.py. Just make it modern and user friendlier:
- Use actual offset 0x16000.
- Add "erase", "offset" and "skip" options for binary file for flexible operations.
- Add "list" command line option to list available boards.
- Add boardId to MbedBoard.listConnectedBoards() method.