get some exception safety, using Cython's built-in exception translation

Uses a hack to get around limitations in Cython, see pcl/indexing.hpp.
See https://groups.google.com/forum/#!topic/cython-users/AAo7MQFLZyw
for explanation.

Also, we no longer need to use the at member when bounds checking is not
needed:

>>> import pcl
>>> p = pcl.PointCloud()
>>> %timeit p.from_array(a)
100000 loops, best of 3: 17.5 µs per loop

This used to be 23.4 µs per loop.
exception for resolution <= 0 in OctreePointCloud c'tor

Used to trigger a C assert/abort in PCL 1.7.1.
fix segfault and memory leak in OctreePointCloudSearch

This is the segfault reported in #28.

__cinit__ unconditionally calls its base class version, so two objects
got allocated and one of them was leaked. Fixed by moving the actual
allocation to __init__.

Similarly, __dealloc__ would call its base class version and a "double
delete" would follow. Fixed by removing the child class's __dealloc__,
and set self.me to NULL explicitly in OctreePointCloud.__dealloc__ for
added safety.
Merge pull request #32 from larsmans/exceptions

Get some exception safety, using Cython's built-in exception translation
improve KdTreeFLANN API and test it

Previously, constructing a KdTreeFLANN object made no sense since there
was no way to set its input cloud. It would segfault at first use.
Merge pull request #34 from larsmans/kdtree-api

improve KdTreeFLANN API and test it
optimize k-NN searches (no Python code in loops)

Body of _nearest_k is entirely white in cython -a output.
Also a tad more type-safety with the "not None" clause.

Performance:

>>> import numpy as np
>>> import pcl
>>> rng = np.random.RandomState(42)
>>> p1 = pcl.PointCloud(rng.randn(100000, 3).astype(np.float32))
>>> p2 = pcl.PointCloud(rng.randn(4000, 3).astype(np.float32))
>>> kd = pcl.KdTreeFLANN(p1)
>>> %timeit kd.nearest_k_search_for_cloud(p2)
100 loops, best of 3: 14.2 ms per loop
>>> %timeit kd.nearest_k_search_for_cloud(p2, 3)
100 loops, best of 3: 15.4 ms per loop
>>> %timeit kd.nearest_k_search_for_cloud(p2, 30)
10 loops, best of 3: 28.3 ms per loop

Previously:

>>> %timeit kd.nearest_k_search_for_cloud(p2)
10 loops, best of 3: 42.9 ms per loop
>>> %timeit kd.nearest_k_search_for_cloud(p2, 3)
10 loops, best of 3: 43.5 ms per loop
>>> %timeit kd.nearest_k_search_for_cloud(p2, 30)
10 loops, best of 3: 57.5 ms per loop
Merge pull request #35 from larsmans/optimize

optimize k-NN searches (no Python code in loops)
add __repr__ to PointCloud
Merge pull request #36 from larsmans/repr

add __repr__ to PointCloud
fix __repr__ on PointClouds
"except +" for minipcl functions

All of these can throw C++ exceptions when running out of memory.
Merge pull request #37 from larsmans/fixes

Two bug fixes