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