Add Optional type and test to collection library.

Here is the answer to everyone's nullability woes.

(At least, we've had good experiences with it in Java and Dart).