Adds basic QGL control flow statements.

control flow statements: qif, qwhile, qdowhile
No compiler support, yet.
Separate comparisons from jumps.

Also print sequence labels, and implement qfunction decorator for injecting
CALL/RETURN into a function call.
qif with no else, and cache qfunction on argument values.
Add unit test for control flow.

In order to pass, needed to add comparison operators to Pulse, CompositePulse,
PulseBlock, ControlInstruction, ComparisonInstruction, and BlockLabel.
flatten and separate

Add utility routine for compiler to flatten and separate QGL sequences
containing control flow statements.

Also, change qif (with else) to put the branch (the tuple) inside a sequence.
So, now qif(N, A, B) returns something like:
[CMP == N, GOTO(A), (B, [A GOTO(end of B)])]
Update find_unique_channels to work with control-flow sequences.
Compiler for control flow QGL.

Adds a separate compile_control_flow_sequence method for QGL sequences
containing control flow statements.

Renames LLElement to LLWaveform. Adds label property to LLWaveform for later
address resolution.

Moves sequence "normalization" down into the individual sequence level.
Consequently, the channel set gets passed down from the top level.
Add remaining control instructions.
Cleanup of compile_to_hardware
Modify higher level compile functions to accept branch sequences in return
values.
Add 'mode' parameter to compile_to_hardware()

Use mode='branching' when using control flow. Mode='linear' will give the old
behavior. For now, the basic effect of this is to turn of SSB.

This pull request also patches a couple other methods to accept 'branches' in
addition to 'linkList' in an awgChan dict.
Revert "Modify higher level compile functions to accept branch sequences in return"

This reverts commit fe60e9d44b9bc257a37e0f9cfd6c46cac641ef03.

Conflicts:
QGL/Compiler.py
Restore a couple of good changes from the revert.
Flatten branches in-place.
Add WAIT instruction.

Will convert this into trigger bits on following APS instruction.
show() should ignore non-waveform instructions.
Generalize add_digitizer_trigger

Now will attach a trigger to any measurement.
Add GOTO back to first sequence.
New handling of channel delays.

Warning: does not yet deal with marker delays appropriately.
Minimal changes for gating.

Not a real solution, but should work for now.