Limit class names to not contain spaces

Signed-off-by: martin f. krafft <madduck@madduck.net>
Basic framework for class mappings

Each node's classes are now pre-initialised depending on the
classes_mapping key in the config file, e.g.:

  class_mappings:
    '*': default
    /^local/:
      - local

This will cause all nodes to get the 'default' class before anything
else, and it will cause all nodes whose name start with "local" to get
assigned the 'local' class.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Handle nonexistent nodes if class_mappings matches

If a class_mapping matches, then there is no real need for the storage
backend to actually find a node record, so if it raises NodeNotFound, we
can gracefully catch this.

This could probably be made configurable, but it's do for now.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Migrate adapters to class_mappings API

Signed-off-by: martin f. krafft <madduck@madduck.net>
Change to using a list of mappings to maintain order

Signed-off-by: martin f. krafft <madduck@madduck.net>
Document the class mappings features

Signed-off-by: martin f. krafft <madduck@madduck.net>
Place classes mapped onto nodes into __reclass__ key

Signed-off-by: martin f. krafft <madduck@madduck.net>
Enable interpolation/backreferences in regexp-class-mappings

Signed-off-by: martin f. krafft <madduck@madduck.net>
Add rebase warning to branch README

Signed-off-by: martin f. krafft <madduck@madduck.net>
Document class mappings in changelog

Signed-off-by: martin f. krafft <madduck@madduck.net>