librustc: Try looking in fixed sized arrays for nullable enum opt.
librustc: Add NonZero lang item and use it if possible for nullable pointer enum opt.
libcore: Add NonZero lang item and implement some methods.
libcollections: Use NonZero in Vec.
liballoc: Use NonZero in Rc.
liballoc: Use NonZero in Arc.