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
If subclasses always assign a value, you could do:
```
final Span span;
JsonEntity(this.span);
```

Then, subclass would pass this value in like:
```
StringEntity(Span span, this.text) : super(span);
```
Not sure if all subclasses assign a value though (or if this field is intended to be mutable).