(HI-115) Add failing test for repeated lookups

PR #152 broke a common use case:

    interpolate %{this} and %{this} again

Since each interpolation scans the entire input string and shares the same
recursion guard, this causes an InterpolationLoop error to be raised.
(HI-115) Process interpolation sites in isolation

Previously, `Hiera::Interpolate.interpolate` re-scanned the entire input string
on each recursive call. This meant all interpolations shared the same recursive
guard and repeated interpolations of the same key were falsely identified as
recursion.

This commit refactors the `Hiera::Interpolate.interpolate` method so that it
performs interpolation inside a blocked gsub. This means interpolation logic is
executed once in isolation per interpolation site in the input string.