Use extern_key() to represent dependencies in yaml
Don't save the obects oid in yaml
Drop the dependency of an object on the schema it is contained into

Also avoid dumping to yaml empty dependencies lists.
Added test to verify a domain is created after a function it depends on

Currently failing (see ticket #100)
Drop redundant dependencies on output, not on input

Dependencies are a valuable information: if the map is complete we can
dump all the object without any a-priori knowledge of the model (such as
that you must first create the tables, then the indexes) and rely only
on topological sort.
Sketching the framework for a topological sort

Dropped the a-priori (and broken) knowledge of the "right order" of the
classes to restore. The `diff_map()` method is split in an internal
version returning a map object -> changes so that we will be (hopefully)
able to topo-sort the statements according to the objects dependencies.
The refactoring is not implemented for all the objects: for the moment
I'm testing with a domain -> constraint -> function dependency as per
issue #100. It's also nice that the public schema ends up last in the
generated statements: the sort will have to put it first, even if it
doesn't make any diff).

The DbObject type is now hashable so that we can use it as dict key.