added flattening routine
wrote method to enumerate flattened lists
replace ast traversals with new Flatten routine so it handles arbirarily nested lists of nodes
append semicolons when unparsing lists of nodes which are children of templates
move Define to ctree.cpp.nodes.CppDefine
test CppDefine with Ast nodes, not strings