Split Hierarchy into parts

Each of the lookup strategies was independent of the others. Each also
had the same interface as a regular backend. This splits them out into
backend classes, the next step is to make them be instantiated like
other backends, then the hierarchy can be composed of the individual
parts.
Split config file from configuration of system

When the config file loading and the configuration of the hierarchy were
combined it seriously limited the amount of flexibility of the system.
By splitting these apart it opens the possibility of creating "trees" of
hierarchies where each level of the hierarchy can contain a hierarchy of
its own.
Expand interpolations inside data structures
Make lookup strategies just regular backends

Each of the different ways of looking up data is now just a different
backend. Each deals with producing its own list of backends for the
hierarchy and so can be composed together inside the hiera hierarchy
definition.
Change semantics of ArrayLookup

ArrayLookup used to act as a lookup of an unordered set of values that
was not allowed to include nil. With the Hiera::Answer class we can now
allow nil as a real value. This changes the semantics to allow nil, and
to treat the lookup as more of total lookup of values, so duplicates are
no longer removed.
Remove vim swap file
Add basic test coverage for part of the system

The changes made to the code have been done without supporting tests.
This starts the process of backfilling those tests and fixes a few
errors that were found in writing them.

These tests are not complete and do not deal with how the system should
behave in various error conditions (such as no access to the files being
read), but provide a starting point.
Update README

The README was getting out of date with what the code did. This updates
it to be more in line with the current state of things.