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, you can collect clouds + images at the same time.

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.
These encodings come from [ROS](http://docs.ros.org/indigo/api/sensor_msgs/html/image__encodings_8h_source.html). Is the Ensenso output single-channel? Then we should use "32FC1".

```cpp
pcl::PCLImage image;
image.encoding = "32FC1";
image.width = width;
image.height = height;
image.data.resize (width * height * sizeof (float));
camera_[itmImages][itmRaw][itmLeft].getBinaryData(image.data.data (), image.data.size (), numBytesCopied, timestamp);
```