Add a slew of tests for List class

It's usually not a great idea to have random in unit tests, since then failures are not always reproducible.