Fix parameter interpolation across merged lists

This was easier than thought. The problem:

   If two lists are merged (extended), and those lists use RefValues,
   then expansion (interpolation) won't work. The reason is that the
   DictPath includes the list indices, e.g. apt_repos:0:uri and those
   indices start at 0 for every list. Now, when two lists are merged,
   the reference to the base RefValue (in Parameters._occurrences) is
   overwritten by the RefValue of the mergee, causing it to not get
   expanded later.

Instead of just updating self._occurrences, we can populate it as we
update scalars, and on extending lists, we can add an offset to the
index in the path of the mergee.

Still: DictPath should go. One day…

Closes: #13
Signed-off-by: martin f. krafft <madduck@madduck.net>
Store URI as part of the Entity object

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

Conflicts:
	reclass/storage/__init__.py
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>
Document the class mappings features

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>
Enable interpolation/backreferences in regexp-class-mappings

Signed-off-by: martin f. krafft <madduck@madduck.net>
Add note about escaping slashes in regexp

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

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

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