Fix for array list and linked list

In this pull request, I added a lot of new tests for ArrayList and LinkedList, refactored these 2 classes, and fixed all errors which were causing many tests to fail.

I re-organized tests in a way that the test hierarchy reflects that of the classes.
So methods declared in ``MutableList`` are found in the ``MutableListTests``, which "satisfies" ``ListTests``, which satisfies ``RangedTests``...

So, ``ArrayListTest`` and ``LinkedListTest`` satisfy all of the above, and add some specific tests to verify their own implementations.

Sorry that I changed so much code in a single pull request, hope it's ok to do that and I can ensure I was very careful to not change anything unnecessarily (however I did get a little annoyed with the lack of white spaces so I added quite a few so I could read it much better).

I am by no means finished yet, there are many things untested still!! So I hope this pull request is a good one so I can keep adding tests and fixing not only ArrayList and LinkedList, but other collections as I get a chance!