zaml: handle multi-line map keys and array values correctly.
The ZAML encoder had some bugs when handling multi-line string values in map
keys and arrays. It also changed behaviour slightly when I modified it for
speed, causing a regression in another case that was correctly handled.
This fixes that, as well as making more robust the process of tagging
structural keys that can span multiple lines.
It also adds some tests to validate that we don't regress again.
This fixes a pre-existing bug in the encoder, as well as my regression.
Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>