Initial cut of basic validation of request bodies

This is just very basic validation of the presence / absence of keys in the body of schedule create and update requests. It only validates the top-level keys so e.g. the metadata embedded within a schedule isn't validated, only the key containing it.

The PR is more of a "trial balloon" to get some discussion of the approach.