Removed the restriction requiring a hierarchy to have only
one root. This does not work well in practice (for example,
what if you want to have some arguments that dispatch
on class type and others on a string?). Interestingly, the
code is simpler as a result.

Made it possible to specify derivations through dictionaries.
This way, it's simpler if you want to specify a large part
of a hierarchy all at once.

is_a now uses Python's issubclass as a last resort. This is
to make it possible to use (new-style) classes without
explicitly having to add their class relationships to a
hierarchy.