Add foldr2-result and map2-result.
to-type() can now fail, stopping type-checking.

Since converting an annotation to a type might result in a type error
(for example, List<A,B,C>), it now returns a FoldResult<Option<Type>>.