Create a ColumnModel that can be used as a column of a TableEntity. Unlike other objects in Synapse ColumnModels are immutable and reusable and do not have an "owner" or "creator". This method is idempotent, so if the same ColumnModel is passed multiple time a new ColumnModel will not be created. Instead the existing ColumnModel will be returned. This also means if two users create identical ColumnModels for their tables they will both receive the same ColumnModel.