propdict: move code that assigns from map-like container into `merge_props()`
propdict: move code that assigns from map-like container into `merge_props()`

Make code safer, add extra checks & diagnostics. Explicitly state that
assigning from another `propdict` goes via default `operator=` inherited
from parent `std::map`.

uentity/blue-sky-re,uentity/blue-sky-re,uentity/blue-sky-re