Allow for return of complex values across hiera

This patch provides the ability to use calls to hiera() in various YAML
files to allow for the re-use of Arrays and Hashes across the hiera
space.

It works by short circuiting the Hiera interpolation process when
anything besides a String or 'nil' is found. Since there is no rational
way to consistently interpret Arrays and Hashes in a hierarchical data
set, this seems to be a reasonable compromise.

= Example =

== foo.yaml ==
---
foo:
  - 'Item One'
  - 'Item Two'

== bar.yaml ==
---
bar: %{hiera('foo')}

A call to 'hiera bar' would return: ['Item One','Item Two']

= Short Circuit Example =

== foo.yaml ==
---
foo:
  - 'Item One'
  - 'Item Two'

== bar.yaml ==
---
bar: "I am a weird string calling an Array %{hiera('foo')}"

A call to 'hiera bar' would return: ['Item One','Item Two']

This closes HI-183 <https://tickets.puppetlabs.com/browse/HI-183>