Raising an instance of `Exception` is pretty heavyweight, because doing a rescue like

```ruby
begin
  # things
rescue => e
  # recover
end
```

will _not_ rescue Exception, only instances of StandardError. This is existing behavior, but since we're here it might be good to address this.

For that matter, exception classes are cheap. It might be good to define a new exception class, like:

```ruby
class Hiera::InterpolationLoop < StandardError; end
```