Ensenso improvments

* Add `tcp_open_` and close TCP port on destruction
* Added as much const qualifiers as possible
* `EIGEN_MAKE_ALIGNED_OPERATOR_NEW` is not needed; not Eigen members
* 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's 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, you can collect clouds + images at the same time.

I fail to display the 2 images with `pcl::visualisation::ImageViewer` ()
I think it's best to wait for the `ImageViewer` to work properly before updating the tutorial.
Actually, this seems to be a recurring pattern throughout your code. Perhaps we could localize this in a small static helper function?