Throw `Error`s instead of objects and strings

Fixes #92.
Merge pull request #122 from mmalecki/use-actual-errors

Throw Error's instead of objects and strings.