Fix violation of functor laws

Because `nil` exists as a singleton in Ruby, we need to preserve it when
yielded from `fmap` in order to obey the functor laws.

This ensures that:

    1.wrapped.fmap { nil }.unwrap_or(1)

Returns `nil` and not `1`.
Change unwrap_or to take a block default

* You can already modify the wrapped value using `fmap`
* It's convenient to have blocks for lazy defaults
* Useful for raising a specific exception for blanks
* Breaks backwards compatibility
Enumerable methods return Present, Blank

Returns Present or Blank where useful:

* collect (same behavior as fmap)
* each (same behavior as present)
* find_all (convert to Blank if the block doesn't match)
* grep (convert to Blank if the pattern doesn't match)
* map (same behavior as fmap)
* reject (convert to Blank if the block matches)
* select (convert to Blank if the block doesn't match)

Allows chaining Enumerable methods to get a wrapped value as well as
combining Enumerable methods with wrapped methods like `fmap`.

Producing an Array for these methods is not useful, because it's
unlikely that you'll want zero or more items (Array) in situations where
you started with either zero or one (Blank/Present).