Test that error middleware is used for middleware errors

This test makes sure that, when a middleware passes an error to its
`next()` function, it is processed by the error middleware.
Process errors in error middleware

This fixes the failing test in 71b6b73.
Test that error middleware are used for thrown errors too

Throwing an error should be treated the same as passing one to the
continuation function.
Catch sync errors in middleware

…and propagate them to error middleware. This fixes the failing test in
c7c9c6b.
Add section about error middleware
Test that dropped errors are treated as unhandled requests
Treat dropped errors as unhandled requests

Fixes failing test from 8f08e12.
Don't pass along arguments

There doesn’t seem to be a need, and it isn’t actually desirable in our
situation.
Add missing semicolon :lipstick:
Test that error middleware can pass different errors

Error middleware should be able to pass a different error than they
receive.
Pass errors from previous error middleware

Fixes the failing test from bb0f4b5.
Merge branch 'error-middleware'

* error-middleware:
  Pass errors from previous error middleware
  Test that error middleware can pass different errors
  Add missing semicolon :lipstick:
  Don't pass along arguments
  Treat dropped errors as unhandled requests
  Test that dropped errors are treated as unhandled requests
  Add section about error middleware
  Catch sync errors in middleware
  Test that error middleware are used for thrown errors too
  Process errors in error middleware
  Test that error middleware is used for middleware errors
Bump to 0.8.0