Convert all line-endings to Unix.

Somehow the templates had some lines with Windows line-endings in
them.
Optimise READ/WRITEs: group operations on primitives as much as possible.

Single READ/WRITE statements can read/write multiple variables at a time,
provided they all have a primitive type. This change updates the READ/WRITE
code generation to exploit this, by grouping primitive READ/WRITEs as much
as possible.

Arrays and complex types are never pulled into such compound IO statements
for reasons of readability (code) and error reporting (runtime).
Update TODO.