(PUP-4511) Ensure that unspecified contained types default to Any
The Array, Hash, and Optional all have contained types that may
be nil. The TypeCalculator.assignable? method didn't handle this
well (it passed nil in a recursive call to assignable?, an
operation that is permitted but will yield a false result).
This commit adds checks to ensure that if the contained type is nil,
then it will be considered to be of type Any.
Some tests were changed to accomodate the fact that Optional[?] now
considers everything to be assignable whereas nothing was assignable
before.