Add support for functionFS based usb functions

This is a pull request of patch series sent recently to linux-usb which add support for functionfs funcitons. I have placed my branch on top of remove gadget functionality, so please take care of those patches first.