Cache generated external nodes yaml
To increase resilience the externalnodes function should cache its results between runs and if it is unable to generate a new result then it should return the cached value.
This may not be as useful as it seems because the puppet clients will also run the last valid manifest they received. I know that this is not quite the same but it is quite similar.
fixes #347 - Cache generated external nodes yaml
this provides saves by default the yaml output from foreman on your
it will default to /var/lib/puppet/foreman directory.
in case of failure/timeout/no reply, it would use the cached version of
the external nodes output.
it also contain the push facts alternative, of pushing a node facts
prior to requesting its external node data.
this is probably the best way to esnure that your foreman instance is
updated while not sending old facts to your foreman server.