app: error handling: make custom Error Classes that can be `raise`d

- Generic Error
- UserUnauthorized Error
- UserForbidden Error