improve test-case coverage for ERB handling

... to cover cases seen in real-world preamble ERBs
Restrict available scope in ERB preamble

Previously we were giving ERB the binding object of Vm.self, which
meant that all variables in the scope of the Vm object were available,
plus any methods on the Vm object itself.

This is kind of risky, and allows people to do operations in the ERB
that we are not comfortable with.

Instead, create an OpenStruct object from our vars hash supplied, and
vapp_name (since this is used in real-world templates). Then supply
the binding object of this object, which is far more limited.
Use stub_const over directly setting ENV in tests

Setting the environment can affect later tests, better to
use stub_const as per:

http://stackoverflow.com/a/19951660/183535
Increase the footprint of the postprocessor test

This commit improves the test on the preamble ERB optional
postprocessor script. Previously we used /bin/cat, so in effect were
using a no-op postprocessor. In addition, the re-use of the ERB
from the previous 'interpolation' test meant we were duplicating
test code.

This test instead tests purely the post-processor function, ensuring
that the character count in the source file matches the output of 'wc'
(word count -- also reports character count). This ensures that the
post-processor *must* run for the test to succeed.
Improve code readability re binding object
Improve readability of ERB postprocessor logic
Add missing data file for postprocessor test
Merge branch 'master' into 70437918_erb_vars_handling
Anchor post processor output matcher

So that we reduce the potential for false positives
Merge pull request #44 from alphagov/70437918_erb_vars_handling

[#70969904] Limit preamble ERB scope