fix handling of nested template parsing. fixed alias handling.
fix handling of nested template parsing. fixed alias handling.

Previously template parsing assumed that all commas were at the current nesting level for
template args.  This is not true when templates become nested like this:

  std::map<std::string, std::pair<int, double> >

Previously the parse would splitting on the comma inside the pair template
brackets as a part of the outer map's template args.  This is now fixed.
The new recursive support for templated types enabled recursive specification
of alias's.  There were a few spots in the code that weren't correctly updated
to deal with this.  Those are also addressed here.

gidden/cyclus,hodger/cyclus,gidden/cyclus,Baaaaam/cyclus,hodger/cyclus,mbmcgarry/cyclus,mbmcgarry/cyclus,Baaaaam/cyclus,gidden/cyclus,rwcarlsen/cyclus,rwcarlsen/cyclus,mbmcgarry/cyclus,rwcarlsen/cyclus,hodger/cyclus,mbmcgarry/cyclus,hodger/cyclus,hodger/cyclus,gidden/cyclus,rwcarlsen/cyclus,Baaaaam/cyclus