Significant speedups in orientation/otracks

otracks.py calls orientation.find_angles_loop, which was very slow.
Seems the main slowdown was in find_angles_loop, sped this up two ways:

 1) find_corner now uses kdtree to find nearby candidate corners
 2) imask was a boolean mask indexed three times, very slow for large
    data array, now it's a searchsorted single scalar index, muuuch
    faster for large n.

Ben still thinks that instead of one dataset with all frames
concatentated, it should be kept in a dict of datasets, one entry per
frame.  This would simplify and speedup many such loops and prevent
issues such as (2) above.

	modified:   orientation.py