Update ply_io.cpp

Reading a binary PLY file with faces and "vertex_indices" property crashes, if only a PointCloud is provided. Since the polygons_ member is set to 0 and untouched otherwise.

Worked in PCL 1.6, doesn't work right now with 1.7.1.

The ply2pcd sample program provided with PCL crashes as well.
Fix some whitespace issues
Added libboost-chrono1.53-dev to Travis CI script.
Added boost::chrono to dependency list

* Chrono was added in boost 1.47.0, so changed minimum version to match.
Added FindOpenNI2.cmake search module.

*also added a find_openni2 macro to PCLConfig.cmake.in to allow external users of PCL to find the OpenNI 2 libraries. This is a duplicate of the code in FindOpenNI2.cmake.
Created abstract Image interface for OpenNI grabbers.
Added OpenNI 2 grabber.
Stopped throwing exception on frame sync failure.

* This is not an exceptional event and always occurs for file devices. Print error message instead.
Fixed data race problem with multiple sensors

* The convertTo..PointCloud methods used statically allocated buffers to resize images, causing a data race if multiple deices tried to create point clouds simultaneously. Switched to using member buffers for each grabber.
Fixed warnings in OpenNI 2 grabberModeToOpenniMode

* Fixed assignment in conditional test
* Removed unused argument to focal length getters
* Removed 'register' keywords that do nothing.
Added OpenNI 2 viewer app to visualization module.

* Changed default viewpoint for OpenNI 2 viewer app. Needed to look down +Z axis to see point cloud.
Added HAVE_OPENNI check to people_app

* Depends on pcl/io/openni_grabber.h and does not work with OpenNI 2.x grabber yet
Move common image files to pcl/io/ during the installation; fix block alignments.
Fix build issues for Visual Studio 2008
Remove hidden assumption that depth source geometry is 640x480
Two cuda device synchronization calls that should not be commented out
Fix an out-of-bounds memory access error
Use flags to check whether member variables have been set

For the person classifier a flag has already been used, but for the
intrinsics matrix and the ground coefficients, data structure specifics
are used in order to determine whether or not the variable has been set.

Since not all data structures have such a specific characteristic,
(e.g. in one of the next patches we introduce a transformation matrix
for which it can't be easily checked whether it has been set or not),
and for consistency, it is better to use flags throughout the whole code.
Fix wrong update of min_points_ and max_points_

The update of min_points_ and max_points_ happens every time the compute
method is called. If voxel_size_ is different from the standard value of
0.06, for each call to the compute method, min_points_ and max_points_ are
getting smaller (for a voxel size > 0.06). After a couple of iterations,
they are equal to zero.

It is better to set min_points_ and max_points_ outside of the compute
method, since there is no need to recalculate them every time. In
addition, min_points_ and max_points_ depends on internal knowledge of
the people tracker (the voxel_size_ and the fact, that there is only one
point per voxel after downsampling). For a user of the people tracker,
the only thing that should matter is the height and the width of a person
cluster. The cluster limits can be deduced from this information.
Move point cloud filtering in own method and make it accessible

In the next patch, the filtering method will be extended. In the future,
it would be desirable to have all computing steps in the compute method in
separate methods, but for the moment we limit ourselves to the filtering.