Ensenso improvments

* Add `tcp_open_` and close TCP port on destruction

* Added as much const qualifiers as possible

* Small formatting and doc updates

* `grabSingleCloud` can only be called when no device is running

* `camera_` wasn't public while `root_` was, it's easier for the user to access the `camera_` parameters now

* Added more transformations function needed for the extrinsic calibration code

* The extrinsic calibration code has been tested and works, I didn't get good results for the moment but it most probably the data that is not good (not the code implementation).

* The image capture callback allows the user to display the images from the camera using VTK/OpenCV, as is, you can't collect clouds + images at the same time (the Ensenso API makes this possible, the PCL implementation doesn't). Maybe I'll add another callback for this later (I'm not sure it's very useful)

I have successfully displayed the 2 (left + right) images using the callback + OpenCV or VTK but I have problems with `pcl::visualisation::ImageViewer` (VTK6 + other bugs..)
I think it's best to wait for the `ImageViewer` to work properly before posting an example.
Yes I've updated this to allow image + point cloud grabbing