Add a slew of tests for List class

im in agreement with jeff here; we should do all that we can to keep the library small and concise. in some cases that means we don't be overzealous trying to catch dumb things. OR, alternatively, there is a DEBUG build that does all of this, but retail has none of this.

Whatever we can do to avoid unnecessary try/catches or checking edge cases that are just not realistic to hit, we should let it fail and avoid adding lots of error checking bulk.