Blueprint version, sets, own{Property,Event}Blueprints

* Changes private `_{event,property}Blueprints` to public `own{Property,Event}Blueprints`
* Use a `Set` for `own{Property,Event}Blueprints` to do the uniquing for us.
* Adds a `"version"` field to module blueprints to allow for backwards incompatible changes (i.e. the Set change in this PR)