Adding interface for os-collect-config

When run (indirectly via os-refresh-config) under os-collect-config, we
expect to receive a list of json files in the environment variable
OS_CONFIG_FILES. Os-collect-config does not define the intended behavior
of consumers of these files, but does suggest that the order is
preserved if the os-collect-config user changes it.

With the order, we adopt a deep merge strategy where later config files
override earlier ones when there is a direct conflict. The end result is
the ability to pull data from many more sources into os-apply-config
templates.

We only provide an implementation and tests in this commit. A later
commit will integrate it into the program and remove the old code.

Change-Id: Id6794a1df1b0cbdfe11f2cf1c2980ab84388b6b8
Reverse order of fallback/new config file handling

We must read the "fallback" files first, otherwise the old values will
override the new values that os-collect-config has picked up from its
sources.

Change-Id: I6ec7958adc9690b68614c4ff48a18607e07746ea
Use OS_CONFIG_FILES to populate metadata tree

Building on the lower level interface, now we can start operating in
a way that will work smoothly with os-collect-config.

This makes apply_config.read_config redundant, so it is removed.

We now parse the environment variable OS_CONFIG_FILES, as defined by
os-collect-config's documentation. The colon separated list is used
to determine the json config files to parse and merge.

Change-Id: I2a2eb7c4d2a3d06a73258cadcae4e7fe4bbb0096