CollectionJsonController can use other types of identifiers

Added a new generic type parameter to the CollectionJsonController so that we can choose what type of identifier to use.
Also created a "default" CollectionJsonController so that we don't break compatibility.