Adjust Some(nil) to return None() so that "surprising" nils don't emerge...

I noticed that I had a NPE despite having things wrapped in the monad, and discovered that `Some(nil)` actually returns a `Some` value. The cause is the absence of a test for "empty" values in the `Some` constructor. This adjustment makes `Some()` and `Maybe()` functionally equivalent, and probably has a small impact on performance; but I think the semantic improvement is significant.