Recursively validate puppet parameter values

Puppet internally stringifies all values, which means that rspec
expectations with integers will fail because 1 != "1". This commit adds
a new parameter class, which can recursively validate a parameter and
ensure that structured data will be properly and recursively validated.