Add flatMapError base error handling primitive

Other error combinators (such as `retry`, or `else`) can be built on flatMapError.  Also, add static throwError which creates a stream containing only an error.

See #19