Provide explicit error kind for disambiguation of underlying cause.

Closes #560 

@swankjesse 
Maybe split this into 4xx, 5xx status codes? Or the caller can do that with access to the code anyway