ENH: Throwing exception for non-triangle cells.

Suggested in code review by Arnaud Gelas.
ENH: Splitted WriteCells() into BINARY and ASCII.

Splitted the WriteCells() method into BINARY and ASCII cases,
as suggested by Arnaud Gelas in code review.

It makes easier to follow the logic of each individual case.