Add per model ID mapping and modelDefaults

Adds per model ID field mapping support via a new ``Schema`` option: ``modelDefaults``. This is used for specifying default schema attributes and links (including ID fields) for all models in the schema.

Since ID mapping is now per model, the id mapping concern has been integrated into the ``Schema`` class and the type lookup based ``IdMap`` removed.

An MIT licensed v4 UUID implementation has been added and made the default id generator.

Tests have been enhanced.

Addresses issues raised in #42