Action-Schema JSON validation

charm.ActionSpec now has a ValidateParams method which accepts an
unmarshaled JSON document, and validates it.  If it is valid, the
method returns true; otherwise, it returns false and a list of
errors returned by gojsonschema.

WIP, opened PR for comments
FWIW, I prefer putting closing } on their own line, to match the opening brace.
Then each field in the struct is in the same form - it's easier to reorder or
to add a new field at the end.

For example I'd format the above as:

	}{{
		description: "A simple validation test.",
		actionSpec: &ActionSpec{
			Description: "Take a snapshot of the database.",
			Params: map[string]interface{}{
				"title":       "Snapshot params",
				"description": "Take a snapshot of the database.",
				"type":        "object",
				"properties": map[string]interface{}{
					"outfile": map[string]interface{}{
						"description": "The file to write out to.",
						"type":        "string",
					},
				},
				"required": []interface{}{"outfile"},
			},
		},
		badActionJson:       `{"foo": "bar"}`,
		expectedErrorString: `JSON validation failed -- (root) : "outfile" property is missing and required, given {"foo":"bar"}`,
	}}

I think it makes it easier to eyeball the correct indentation too.