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
Merge pull request #2704 from sebgie/issue#2690

Add distinct error classes
Clenaup API index.js, and add docs
Refactoring API arguments

closes #2610

- destroy takes an object all the way down to the model layer
- all API methods take consistent arguments
- route params such as :id, :slug, and :key are passed as an option & used to perform reads, updates and deletes
- HTTP posts api can find a post by slug