Fix a bug in the pretty printing of string interpolation.

For string interpolation expressions, the `$` was printed twice if there
were braces surrounding the expression.

Also add a special case for empty map and list literals to pretty print
them without a newline before the opening and closing bracket or brace.