Modify insert functionality.

Previously, duplicates were rejected. Now, duplicates are replaced. This
is a superfluous operation for scalar data, but is necessary for
structs, where 'duplicate' may mean that only one of the data elements
is a duplicate, and the other data elements may differ (e.g. for a map
data structure).
Add initial incomplete implementation of BST map.