Update math docs.
Add option_t type.

This is mainly intended to mimic the behavior of Scala's Option class,
since it's fairly useful when returning value types to simply return
nothing or something, rather than define a range of something to be
nothing.
Add conversion for none_t to option_t.

This helps when returning none from flat_map and such, though it does
require that you explicitly specify the return type for the functor
passed to flat_map or explicitly cast the functor, otherwise the return
type can't be deduced since none_t has no value_type.
Give none_t its own special value_type.

This allows flat_map to infer its returned option type, though the
returned option is mostly useless afterward since none_t's value_type
isn't really useful for anything other than type inference.
Fix spacing between definitions.