avoid duplication when handling custom JSON, and honour custom provisioner JSON

This will allow us to configure an external SMT server by placing appropriate
configuration in /etc/crowbar/provisioner.json, e.g.:

    {
      "attributes": {
        "provisioner": {
          "suse": {
            "autoyast": {
              "repos": {
                "SLES11-SP3-Updates": {
                  "url": "http://smt.suse.de/repo/$RCE/SLES11-SP3-Updates/sle-11-x86_64/"
                },
                "SLES11-SP3-Pool": {
                  "url": "http://smt.suse.de/repo/$RCE/SLES11-SP3-Pool/sle-11-x86_64/"
                }
              }
            }
          }
        }
      }
    }
json-edit: allow key elements containing '.', by backslash-escaping

    ./json-edit -a 'foo.2\.0.bar' -v 'value' test.json

will now result in:

    {
      "foo": {
        "2.0": {
          "bar": "value"
        }
      }
    }

This is now required since we will be enumerating repositories to be
included in autoyast.xml generation from meta-data contained in
provisioner.json, and we want to key that meta-data by repository
name to avoid requiring an extra set of repository keys.  Repository
names can be things like "SUSE-Cloud-2.0-Updates", hence the need for
allowing JSON key elements to contain ".".

There is a corresponding commit in the barclamp-provisioner repository
adding the same behaviour to parse_node_data.
skip local repo checks if external SMT server is configured