Fixed some memory leak issues with the C code.

Thanks to Valgrind, I was able to realign the "delete" methods to more easily free the ArrayList's allocated memory.
Valgrind also found some missing delete statements at the end of some unit tests.
Valgrind helped me fix some nasty initializer list C++ memory bugs.

There was a bad array initialization in the ArrayList default constructor.
I was using a completely unitialized size_t to determine how big the values array would be.
This resulted in Valgrind giving a seemingly innocuous "large allocation" warning.
Turns out the default constructor was creating a ~500mb array (and that was just on this particular compilation)!

The other other initializer list error, in the IList copy constructor, is a little more puzzling.
I added a comment describing my thoughts on the issue.
I think I will do that (detail my thoughts as comments) more often when I hit weird design or code issues.

Closes #8
Closes #17