changing out errors for permission and existing

For the errors `ENOTDIR`, `EISDIR`, `EPERM`, and `ENOENT`, there should be valid response codes send back, respectivly: `404`, `404`, `403`, and `404`. This helps make it clear that there aren't server errors happening, but in fact the files themselves have conditions that cannot be met from the request.

An update to Krain is coming as well