* Error -> Defect for defects
The distinction between Error and Defect is subjective,
context-dependent and somewhat arbitrary, so when looking at an
exception, it's hard to guess what it is - this happens often when
looking at a `raises` list _without_ opening the corresponding
definition and digging through layers of inheritance.
With the help of a little consistency in naming, it's at least possible
to start disentangling the two error types and the standard lib can set
a good example here.
* Consider proc as a pointer type in options
* Add version annotation for SomePointer having proc in options
* Log procs as pointers for options in changelog
* Add >>= operator to Options
* options.bind callback signature: A -> Option[B]
* Use `flatMap` as the name of the Option bind operation.
* Rename Options test "bind" to "flatMap"
* CR from @dom96: Remove spaces inside of check() call