Make finding free instructions a lot faster

Here I store a map of cycle->instruction pairs and only allow new
instructions to be added after current instructions.  The general idea
here is that this makes scheduling a whole bunch faster but produce
worse results -- it's fine in this case because I just want something
that works.