Lots of new modification methods.
Changed semantic of addProperty to not replace a property with the same name.
added a replace(Property) method.