Improved running time slightly by making some complexity reductions
Significantly improved running time by changing data encoding

I realized that the majority of the time spent on scheduling was actually
pattern matching and not some sort of complexity having to do with the size of
the block. For 2000 instructions, the scheduler takes about 2.5 seconds on a
Xeon E5-2620 @ 2.00 GHZ with clips compiled with -march=corei7-avx and -O3
Improved running time once again.