Bounds on pure vars are per-func, not per-stage, for simplicity.
Error message for bound of vars that don't exist.
Added test that checks realizations are being correctly expanded to cover use.

Sometimes consumers just need to load something, but it can be garbage.
E.g. because they're vectorized but the producer only computes 3 values.
This checks that.
Better error message when on Func uses another in an unbounded way.