Encapsulate DUMP contents in "do { ... } while (0)"

This makes the macro more function-like and easier to read.
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
Merge remote-tracking branch 'bska/fully-implicit' into fully-implicit