Check for a binary callback first since a function with an optional
second argument will match both typedefs.
Remove documentation around a synchronous error following some other
error or value - a synchronous error can never follow a value or an
asynchronous error. If there is a synchronous error it will _always_ be
the first thing to happen.
Add a test for a unary error handler and an error handler with an
optional stack trace argument.