Add inout NSError parameter to map et. al

This change introduces a way to fail from futures created due to
map or andThen. In Scala, we can just throw an exception, but we
need a way to handle this in Swift.

Unfortunately, I think we are going to have to pass the inout
parameter every time. I tried overloading the function, but you
get weird errors if you don't explicitly type your closures even
for the version without the inout parameter. It's a necessary evil.
Removed inout error parameter on `andThen`
Map's closure needs to return an optional

When there is an error, it might be impossible to make a value, so we
need to return an optional.
Cleaned up rebase errors
Merge remote-tracking branch 'bkase/functional-comp-errors'
Update Readme.md with example of hiding the error param for map