16856 - Add a module data directory and hiera backend to consume it

While DRYing the Hiera indirector to use the HieraPuppet class a slight
behavior change in the HieraPuppet from the code in the indirector was
not noticed which meant that in the case where Hiera found no data an
Puppet::ParseError exception from the HieraPuppet class was not handled
by the indirector which prevented code like:

   class x($y=$x::y::z) inherits x::y { }

from working correctly, the value for $x::y::z would not be used as
a default here