Add read meta definition function

Meta definitions are essentially the blueprint for reading structures,
but they're very simple, constructed of a UVInt that indicates a reader
type and then everything else is delegated to that reader.
Separate registering of names, defs and relations

We can determine the type of the thing we are to register by the
structure of it's location. This changes implements an ad-hoc
multimethod dispatch on the same location object to determine whether
something is a name, definition or relation. From that we can create the
object and register it.

Relations have a 'tag' instead of a 'name'. Are these equivalent?
i.e. can we use tags to index the types. Does anything even refer to
relations or is it only relations that refer to other things? Tune in
next time for answers.