Add function for basic search

A predicate dict is passed with attribute names to be searched and
the value to be matched. String values will be matched using a regexp
operator. Non-string values will test for equality. The default operator
between expressions is ‘AND’, but can also be ‘OR’ or ‘XOR’ all with an
optional ‘NOT’ for negation.

Grouped expressions are not currently supported.

See: http://docs.neo4j.org/chunked/stable/query-where.html for details.

Signed-off-by: Byron Ruth <b@devel.io>
Change label/id to be first in Node.__str__

In addition any UUID used for a representation is trimmed to 8 bytes
for readability.

Signed-off-by: Byron Ruth <b@devel.io>
Fix cascading remove logic to remove node-bound edges

Edges were mistakenly queued for removal based on the dependence
relation with the other node.

“Circle” and “b-tree” graph test cases were added for more testing
more complex networks.

Signed-off-by: Byron Ruth <b@devel.io>