Always apply the node/edge label on match

This prevents the case of conflicting labels between nodes and edges
or other domains in the graph (provenance).

Signed-off-by: Byron Ruth <b@devel.io>
Rename argument labels => label

It is more common to have a single label so the name is more appropriate.
Both a single string and a list/tuple of strings are supported.

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

Signed-off-by: Byron Ruth <b@devel.io>
Omit __main__ modules and environment errors in coveragerc

Signed-off-by: Byron Ruth <b@devel.io>
Move validation and defaults to model classes

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