Charm now validates YAML-loaded Actions schema

At the time the Charm's Actions schema is loaded from YAML, gojsonschema
now uses its Validate method to ensure that the loaded schema conforms to
JSON-Schema Draft 4.  The schema for JSON-Schema Draft 4 has been added
as a .json file to the charm package in order to avoid remote queries to the spec.
We should not need to do this every time we call ReadActionsYAML - the spec always remains the same.

I suggest doing something like this (put it in its own file, say metaschema.go):

    package charm
    
    var (
       readSchemaOnce sync.Once
       metaSchema *gojsonschema.JsonSchemaDocument
    )
    
    func jsonMetaSchema() *gojsonschema.JsonSchemaDocument {
         readSchemaOnce.Do(func() {
             schema := parse metaSchemaJSON
             var err error
             _jsonMetaSchema, err = gojsonschema.NewJsonSchemaDocument(schema)
             if err != nil {
                  panic(fmt.Errorf("cannot parse metaschema: %v", err))
             }
        })
       return _jsonMetaSchema
    }
    
    var metaSchemaJSON = `
    {
        "id": "http://json-schema.org/draft-04/schema#",
        "$schema": "http://json-schema.org/draft-04/schema#",
        "description": "Core schema meta-schema",
        "definitions": {

etc

Then you can call jsonMetaSchema every time you want to validate, and
it will always return the same thing.