Reviving support for instrumentation in CSharpCodeVisitor

Fixes #42
We only generate a Write statement for expression chunks if the expression is being written (i.e. we have a `Write(foo);` statement. So the instrumentation is conditionally generated. Literals always result in a `WriteLiteral` invocation.