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
You don't need to rename this class, but fyi, a `Sink` name for a type in dart generally means it implements https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-core.Sink.