Fix a broken implementation of c-escape-string

...I don't really understand the original logic.
Allow more things at toplevel.

Specifically:

* declarations
* (begin ...) for multiple toplevels. This is useful if you want to
  generate toplevel constructs programmatically.