Add unique id base methods

/to @bajtos 

This refactors all identifiers for workspace entities. It uses the `idName(model)` and provides the right value based on the configuration of the entity (in `models.json`). By default it will set

`idName =  componentName` + `name`

In `models.json` we can set an additional id part to create a more specific id when required. 

 `componentName` + `modelName` + `name`
> Can we refactor entity.getUniqueId to a static method accepting JSON data? Possibly keeping entity.getUniqueId as a thin wrapper return Entity.getUniqueId(this).

Sure.

> I am worried about creating a model instance when the connector cache is in a possibly inconsistent state.

Why would this be an issue?