stop copying point clouds around

Changes the PointCloud object layout to store a shared_ptr. This
actually simplifies quite a bit of the code (fewer casts), at the
expense of a hack to assign to a shared_ptr and a Cython 0.21
requirement.
refactor registration and run algorithms without the GIL
copy constructor for point clouds
Merge pull request #51 from larsmans/shared_ptr

Less copying-around of point clouds