vinput: Refactor device management

Uses embedded struct device into struct vinput. This allows to enable:
- Uses device_register for cdev handling rather than doing it manually.
- Uses release callback for device for more consistency when unregistering.
- Move the device_register function call after vinput custominit is done to allow special device files

This force to change of all the code that was accessing vinput->dev as a pointer.
vinput: Fix error handling

Return a clear value when kstrtol fails