Add a C++ PointCloud2 Iterator

Here are the packages that use PCL for PointCloud2 conversion.
- [ ] navigation
- [ ] octomap_mapping
- [ ] velodyne
- [ ] velodyne_height_map

The following packages could even drop the PCL dependency:
- [x] calibration
- [x] gazebo_ros_pkgs
- [x] image_pipeline
- [x] moveit_ros
- [x] octomap_ros

If we add a TransformPointCloud method, more than half of the first set can also drop the PCL dependency.