This adds the ability for the camera type to be set by the user. This also allows the camera url to be changed on-the-fly. If a camera is already connected when the camera type or url is changed, the current camera will be disconnected and the new camera will be connected
This also adds a CameraWrapper class to allow the camera type to be easily changed on-the-fly
closes #28