Support for custom primary keys

In some cases, a remote web service will use an attribute other than `id` for the primary key of each record. (In our case, one of the services we use calls it `Id`.)

This allows declaration, on a model by model basis, of the attribute name which should be used as the primary key. We also look for `:id` in custom resource paths and substitute the appropriate attribute name, to minimize the need to rework existing code.