Add distinct error classes

closes #2690
- added new error classes
- moved errorhandling.js to /errors/index.js
- changed API errors to use new classes
- updated tests
- biggest improvement for me is that every error holds an error stack now and it has become quite easy to output where the error occurred :-).