Added Json serialization support. Issues #13 and #14
Implemented recursive disposal of product, issue #24
Deleting component also disposes it. Issue #25
Removed unused code.
Added mapping from type to schema, #27
Extracted IToolkitBuilder interface which will be the entry point for toolkit discovery.
Created product store implementation that reads and initializes products.
Forbid creation of runtime property named "Name" as well as schema property named "Name", since it's an intrinsic property of all components.
Fix schema builder to skip adding Name properties and verify any declared such property is of type string.
Added Store property to IProduct, which allows to reference its owning store, which is needed to detect duplicate renames of products.
Added detection of duplicate names on component renames.
Added checks for unique names also across properties and container components (since serialization assumes unique names, and code-first ensures it).
Implements #28.