enhance device enumeration

This PR implements the methods to get device serial numbers  and to open a device identified by its serial number. Retrieving the device serial number requires opening the device. Therefore, the device is also reset during enumeration. fixes #21