Feature/go hci v4

v4 addresses most of the comments so far.

The changes/diffs are exactly same as current tip of v3: 9a19af2.
Only the most history are squashed into logical order for merge purpose.

Currently, we set the boundary between generic and platform code around l2cap. But I'm planing to add another abstraction layer between them - roles(peripheral/central). This should pave the way to support other platforms which provide BLE API around role level, such as apple core bluetooth, and android framework. In this case, we'll shift more code to the linux/.

Note:
It requires linux kernel v3.14+ for the new USER_CHANNEL of HCI socket.
When a device is opened with user channel, it requires exclusive usage of the HCI interface.
So the HCI interface must be in "DOWN" status, or -EBUSY is returned.

ex: sudo hciconfig hci0 down

Revision history:
v0: 9225a4f
v1: dc97e44
v2: 8602eff
v3: 9a19af2