Add streaming checking and timing estimation.
Move to faster pulse hashing.

Some crude profiling showed for sequences with many pulses (e.g. CPMG) pulse hashing was taking ~15% of the compiling time. Unfortunately for the the length of pulses we typically use it actually doesn't yield much of a speed-up (see below).  But still, might as well do it.

In [63]: silly = np.random.rand(32) + 1j*np.random.rand(32)

In [64]: timeit hash(tuple(silly))
10000 loops, best of 3: 21.7 us per loop

In [65]: timeit hashlib.sha1(silly.view(np.uint8)).hexdigest()
10000 loops, best of 3: 20.3 us per loop

In [66]: timeit hashlib.sha1(silly.tostring()).hexdigest()
100000 loops, best of 3: 11.8 us per loop

In [67]: silly = np.random.rand(2000) + 1j*np.random.rand(2000)

In [68]: timeit hash(tuple(silly))
1000 loops, best of 3: 1.45 ms per loop

In [69]: timeit hashlib.sha1(silly.view(np.uint8)).hexdigest()
1000 loops, best of 3: 315 us per loop

In [70]: timeit hashlib.sha1(silly.tostring()).hexdigest()
1000 loops, best of 3: 315 us per loop
Refactor away some tmpVarNames
Plot channel if *any* sequence has something.

Don't just check the first.