add CsvTopo (reads topology from  "Coma-separated Values" files)

I think CsvTopo is really useful for mid-sized topologies with irregular structure.

(I'll work on streamlining the patch if you don't accept it as is, but you don't discard the idea either.)