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. 
> Should we be using typedef typename?

Probably, but it's surprising if it compiles this way on cl, gcc, and clang. cl has always been very loose about `typename` but the other compilers are generally more strict.