Fixed a bug in the RobotControlIO shutdown procedure. It was not joining the IO thread back correctly when getting deleted through the GUI, so I rearranged it so that a call to ShutdownIO will call ExitIOThread. So anytime you want to shut down the IO you need to call ShutdownIO and not ExitIOThread directly.