Postpone reading config files as far as possible

If you want to install nimsoft and modifiy aspects of a nimsoft
configuration file you might end up with a corrupt config file. This is
because when puppet runs, nimsoft is not yet installed and puppet
assumed an empty configuration file. When puppet now installs nimsoft,
the installation process creates a configuration file but puppet is
unaware of that change, because the parsing of the empty configuration
file has already been done.

If puppet now evaluates your nimsoft resources it will write a new
configuration file with only your resources in it.

Postpone the reading and parsing of the configuration file as far as
possible and as a result it will happen when puppet performs the
prefetching of the resources (which in turn happens when the first
resourcee is handled)
Preserve attribute order

Since we are storing attributes in a hash we cannot rely on any ordering
so if we later write a cfg file to disk the attributes may be ordered
differently. Normally this should not make any difference but there
might be probe configuration file where ordering is crucial and it also
makes testing a lot harder because the generated configuration files are
unpredictable.

We now save the order in which we read the attributes from disk so we
can preserve the order if we late have to sync the modified
configuration back to disk