improve consistency of surfaceWriters
slight confusion between write() or writeGeometry() for writing geometry (some transitional code remnants), which can lead to the geometry not actually being written. Unify on write() and make it pure virtual in the base class to ensure that all writers explicitly deal with it.
remove possibility to change proxy file extension after creation of the writer. This helps avoid surprising output, or indeed even failure at write time. The proxy extension should be fully established on construction and treated as an invariant thereafter