API key validation added, errors added

- Added a validator for API keys
- Added a model for API keys
- Modified the way controller factory creates routes
- Added a factory to generate custom errors (extending abstractError
class)
- Added error handlers