Introduce INodeDoc instead of passing around dicts

INodeDoc's are returned when you query the registry, and are read-only
snapshots of the nodes in the registry.  It also serves to document the
attributes supported by the registries.

INodeDoc is implemented by registry.nodedoc.NodeDoc which is used by
registry.couch_registry.CouchRegistry and by
registry.dict_registry.DictRegistry.
Add 'tenant' as top-level node attribute; refactor

tenants (as in multi-tenant) can now be associated with nodes, and searched
with get_nodes().  It was added as a top-level node attribute so that it can be
easily indexed.  IRegistry, INodeDoc, IProvisioner, Node and Manager have been
updated to support the new tenant attribute.

Manager now has a single get_nodes() method with filters instead of the
get_nodes_with_* methods.  IRegistry.get_nodes() has also been updated.

Registry tests updated to use a Mixin due to commonality.