[CORE] vmm_devdrv: Improve reference counting of struct vmm_device

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] usb: Implement usb_device as an extension of vmm_device

Currently, struct usb_device and struct usb_driver were totally
independent of struct vmm_device and struct vmm_driver.

This patch improves usb framework, to extensively use the vmm_devdrv
APIs and implement struct usb_device as an extension of struct vmm_device.

Signed-off-by: Anup Patel <anup@brainfault.org>