Redmine#6008: provide Mustache % and $ escape sequence for serialization

Summary:

Test Mustache template:

```
all variables serialized, multi-line format: {{%vars}}

all classes serialized, compact format: {{$classes}}

a single variable serialized: %focus = {{%vars.main.focus}}

a single variable serialized: $focus = {{$vars.main.focus}}
```

The output is the serialized version of any passed-in data container, just like `storejson()` or `format("%S", container)` puts it in a string.

Test policy (note that the `datastate()` function's output is the passed data):

```
bundle agent main
{
  vars:
      "focus" string => "attention";

  files:
      "/tmp/out.json"
      create => "true",
      edit_template => "$(this.promise_filename).mustache",
      template_method => "mustache";
}
```

Unlike writing the output of `storejson()` or `format("%S")` to a file, this doesn't go through the evaluator strings.  The acceptance test will show it, and you can also see a demo at https://gist.github.com/tzz/ba215a1e49df140eec1d
That would be inconsistent with normal Mustache behavior, but OK with me.  Let me know how you want to proceed or go ahead and make the change yourself.  Also can you adjust the indentation as you see fit, if you make the change yourself?  No need to wait for me, I'm on vacation :)