Update to testComponents

Made it more general and to behave more like what was described in issue #66.

It is designed to test all components for their "structural" integrity. That is they can: clone, de/serialize, connect to an aggregate and verify its connectors, add themselves to a system, contribute to state initialization and can do so without leaking more than 1/10% of their initial memory footprint. These can be tightened more once we find the source of these small leaks.

Of course not all (majority of) components do not pass. The main issues are dependencies not specified via connectors and memory leaks. Body, all Joints and a handful of Forces have been fixed but there are many many more to be done. The test however is in working order and has proved effective at finding issues with existing Components. 
> Thought you only need typename if the type is a template? In which case this iterator is specialized so no longer a template.

Ah, no I think you're right Ajay. Since the map<K,V> template is specialized here to map<string,ptr>, the compiler can look at the actual definition of const_iterator so it isn't ambiguous!