Warn if you forget to schedule an update step.

This caught two real bugs in the tests!

The exact test is: If any var-altering scheduling primitives are called
(split, vectorize, fuse, etc) on any stage. Then Func::update(foo) must
have been called for every update stage.

So this results in a warning:

  f(x, y) = x;
  f(x, y) += 1;

  f.vectorize(x, 4);

This does not:

  f(x, y) = x;
  f(x, y) += 1;

  f.vectorize(x, 4);
  f.update(); // I really intended to not schedule the update stage

This doesn't either, because often pure stages are trivial:

  f(x, y) = x;
  f(x, y) += 1;

  f.update().vectorize(x, 4);

This does:

  f(x, y) = x;
  f(x, y) += 1;
  f(x, y) *= 2;

  f.vectorize(x, 4);
  f.update(1).vectorize(x, 4);
  // Forgot to call f.update(0);

This does not:

  f(x, y) = x;
  f(x, y) += 1;
  // These calls apply to the entire function, not just the first stage.
  f.compute_root().bound(x, 0, 10).reorder_storage(y, x);