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
Good point -- it *can* technically be a single value.  I'll fix that.

I think the cleanse is only necessary if we want to re-serialize to BSON.  Its purpose is to remove potential interface{} keys from a map and replace them with strings or discard the map.  BSON fails to serialize maps with interface{} keys.