Optimizable assert equivalents.

No iterations when optimization is enabled.
Better duplicate testing for nodes.
Re-organized code and tests in low/high-level.

Low-level functionality deals with Nodes and Edges
High-level deals with Paths and Ensembles, the
latter being composites of low-level objects.
Some TODO in README.
Added ttl for Graph, Node and Edge and named store
Cleaner Graph name API, store: hashes and tests.