working version

Tons of changes and refactoring.

The upshot is that so long as there is mouse data in the eventdata, we
first estimate the toffset by going through the video, trying to find
nSamples=10 unique mouse locations, and to estimate the time. If the
first 10 is not enough, the process will repeat to add more data.

For the matching algorithm ... I simply find all the matches based on
mouse locations first. After eliminating those with multiple matches, I
get a set of unique matches, which I presume are the right ones. I next
eliminate also those that are 'out of order' (assuming we process the
video in sequence). What's left is presumably the matches.

To estimate the offsets, I simply take the difference between the
average timestamps in the video and the gazeevent data.

This may not be the smartest algorithm, and I can see how it will miss
things. But it seems to work.

A lot of time is spent on trying to figure out the data structures,
particularly the conversion between list, tuples, and numpy arrays.