Handle HCI errors without crashing
Issues reported by Andrey Kosachenko have shown that we cannot expect blued to not receive HCI errors from the hardware when issuing commands. See issue report: #1 (closed)
This MR includes changes that move HCI message construction from btdevice into hci_socket and adds error handling for HCI errors from the controller.