Finalize error handling.

I still need documentation for finalizers, and some finalizer tests, but
I've implemented all of the error machinery, decided how it's all going
to work.

With this commit I've implemented propagation by throwing the `errors`
array and returning the first error unmatched by a conditional catch.

Closes #117.
Closes #116.
Closes #115.
Closes #105.

File                             Raw         Min         Zip     Min/Zip
index.js                 15029/14.68  4518/04.41  4299/04.20  1717/01.68