I noticed that the yaml backend for hiera (and thus puppet ;)
required key/values to be in this format; nginx::gzip: on

That's great for one off variables, but the syntax really starts
to look very noisy when you get a yaml file with 10 modules,
and each modules has 20 lines in looking like;

  nginx::sendfile: on
  nginx::worker_connections: 10
  nginx::gzip: on
  nginx::tcp_nopush: on

Instead, it's a lot cleaner/clearer and (I think) in keeping with
the spirit of yaml to have something such as;

  nginx:
    worker_connections: 10
    sendfile: on
    tcp_nopush: on
    keepalive_timeout: 0

This patch and tests accomplish the latter syntax.