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).
Whoops. Will push a follow up.