Fixes unsigned/signed int issues in controller.py

I was un/packing things as unsigned ints when they should be signed ints
Adds get_position.py which reads out the position, in mm, of controllers.
Makes explicit position is in mm in docstring of goto.py
Implements move() in controller.py to move relative to current position
Adds move.py to exercise move method on Controller
Improves exception handling in goto.py, adds new position readout
Refactors move and goto.py to handle non-int positions
Adds get_status to controller.py, also explicitly casts new position to int
Adds MGMSG_MOT_{REQ,GET}_DCSTATUSUPDATE to message.py
Updates grammar in docstring of home.py slightly
Adds get_status.py
Renames get_status() to status() in controller.py (updates get_status.py too)
Introduces ControllerStatus class, which is returned by goto (controller.py)
Refactors MTS50Controller into MTS50, and in its own file
Adds MTS50 to __all___, prepends 0xfaf0 to USB_PID_LIST for faster open (__init__.py)
Optimises get_status.py to avoid unnecessary device listing
Adds a bench.py to perform rudimentary benchmarking of various functions
Adds __str__ and fixes position calculation bug (ControllerStatus.py)
pyAPT will now set USB_PID_LIST to just 0xfaf0 on import (__init__.py)
Modifies goto so it only returns with wait=True when stage has arrived (controller.py)

By arrived I mean that when goto is used with wait=True, by the time it
returns, querying the controller's position using status will return a
position exactly equal to the position requested.