improved arraylist removal behavior. it now makes the array smaller when it gets too empty.

fixed getNodeBefore so it actually works.

added more tests and made sure things passed them.
fixed a couple minor issues. I think it is done now. Time to move onto required test classes.