atoi does not work on hex, convert to (uint16_t)strtol()

The -p and -v parameters make it sound as you could pass a hexadecimal
value along. That however causes atoi to fail and pid/vid are set to 0.
Using strol allows a wide range of values to be passed along, but needs
to be cast back to a 16bit value. A check could be added to verify the
input is within range.

Signed-off-by: Olliver Schinagl <oliver@schinagl.com>