Inittial end-2-end implementation of a builder for "manifest.json" files.

This change contains mostly the infrastructure to enable validating the content of "manifest.json" files. There are many more rules to implement (in later changes).

The intermediate JsonValidator library should be re-usable for other json based builders.

There is also a need to enable more precise testing of the error messages produced.

Note that there is an issue with initial validation (no errors appears until the file is changed in the editor). I don't think it is specific to this particular builder, as it seems Builder.Build is not called when a file is initially open in the editor. I will investigate further.

@devoncarew
Ack. In this case unfortunately, it turns out "span" is only "semi" immutable. It is set only once, but outside of the constructor. I tried to "fix" that, but it required defining more intermediate classes, an I didn't think it was worth it.