Add support for LE Events to libbluetooth

Now we can receive and deal with LE Events, which are encoded inside
a LE Meta Event, using the low-level libbluetooth.
diff --git a/lib/hci.c b/lib/hci.c
index 3b2baf9..a1538ac 100644
--- a/lib/hci.c
+++ b/lib/hci.c
@@ -1093,6 +1093,7 @@
 	hci_filter_set_ptype(HCI_EVENT_PKT,  &nf);
 	hci_filter_set_event(EVT_CMD_STATUS, &nf);
 	hci_filter_set_event(EVT_CMD_COMPLETE, &nf);
+	hci_filter_set_event(EVT_LE_META_EVENT, &nf);
 	hci_filter_set_event(r->event, &nf);
 	hci_filter_set_opcode(opcode, &nf);
 	if (setsockopt(dd, SOL_HCI, HCI_FILTER, &nf, sizeof(nf)) < 0)
@@ -1106,6 +1107,7 @@
 		evt_cmd_complete *cc;
 		evt_cmd_status *cs;
 		evt_remote_name_req_complete *rn;
+		evt_le_meta_event *me;
 		remote_name_req_cp *cp;
 		int len;
 
@@ -1186,6 +1188,17 @@
 			memcpy(r->rparam, ptr, r->rlen);
 			goto done;
 
+		case EVT_LE_META_EVENT:
+			me = (void *) ptr;
+
+			if (me->subevent != r->event)
+				continue;
+
+			len -= 1;
+			r->rlen = MIN(len, r->rlen);
+			memcpy(r->rparam, me->data, r->rlen);
+			goto done;
+
 		default:
 			if (hdr->evt != r->event)
 				break;