Renaming ArrayList.h to IArrayList to make way for the dual API thing...
Redesigned the C API slightly again.

I am now exposing the ArrayList implementation "class" in its own ArrayListImpl header/impl fileset.
I modified the normal ArrayList pseudo-interface class to correctly call the new impl functions.
The benefit to this change is that if you want to JUST use the bare metal implementation of the collections without all that stupid OO stuff, you now can.

I DO like having the "acutal implementation" code separate from the "OO function delegation" code.

This effectively makes ArrayList yet another pseudo-interface.
I will not yet call it IArrayList since that IS the class you should create if you want to work with any level of the OO model.

I will have to redo my unit tests to have the implementation heavy tests (e.g. capacity checking) operate on the impl class while the pseudo-interfaces are merely smoke tested to ensure I didnt muck up a function pointer or something.

This change was inspired by a certian someone who rather disliked the OO path I took.
Well now we can hopeflly have the best of both worlds :P