runtime: updating how time info is set and propagated.

 - rate propagation must be held individually in buffer_readers. Different readers of the same buffer can propagate in different directions.

 - redid recursive walks to use edges instead of endpoints. Allows me to set the direction of the rate propagation info between the correct ports.

 - block_detail holds the direction and port number for how to propagate rate and time info.