metavalidate's job was to call all the callbacks before validate, then call validate. This is now done by _validate().

The call trace for Space.validate() / np_validate() is:

    np_validate() / validate()  \# asserts that batch is numeric/symbolic
      --> self._validate()  \# calls np_callbacks/ callbacks
        --> self._validate_impl()  \# subclasses validation code

I guess I renamed metavalidate to _validate because somehow "meta" made it seem like it might be at the top of the call chain, not the middle. Also, there was no longer anything meta about it once you took out the arguments that were function names.