Allow history and define history

This allows multiple objects of the same type and ID with different
versions. A conventional definition for history is also formalized.

Fixes #6