Add provisions to support multiple altsettings

This commit implements the support for one interface to have multiple
altsettings. It also adds hook that user can use to perform actions
when the alsetting switch is performed by host.

Conflicts:
	lib/usb/usb_standard.c