Use real errors instead of objects fixes #48

Made a best effort to preserve backwards compat (which you can throw away during your rewrite) but real errors should _always_ be passed to both throw calls and promise rejections.