Templates are now distinguished between deep and shallow copy ones

- A data structure may now have no generic version, and if it does have a
  template it is either simple or is distinguished between deep and shallow
  copy. Plain old data types can only be used by the Shallow copy template
  if one exists

- Hashmap now has a generic hashmap implementation which has RF_String keys
 and object pointers for values.

- Hashmap also has a deep and a shallow copy template.

- Other minor changes