* Updated not to add "friend class" to embedded private list so it can be accessed.
* Added a list to hold all friends class decl so able to specifically make sure not to remove them from io source but not to allow is source for others.
* Added namespaces to class names for comparison as class name only needs to be unique within the same namespace.
* Added if NULL check before getting friend decl type string.
When saving the list of namespaces and classes a particular type is contained in
we have to save the class name and any template args it includes separately. This
allows us to mangle the names easier. And we now search for type names to see
if they follow this pattern template_name<template_args>::embedded_class. If
we are using a template embedded class we need to create attributes for the embedded class.
Hey buddy. I wanted to tell you this before you heard it from someone
else...
I refactored ICG.
Now, it's gonna look a little scary at first. But I promise you'll like
it when you get used to it. It'll be fine. You can trust me. #341