Job
Represents an executable job taking its corresponding payload
Open for new jobs to extend and implement how it handlePayload
Job has its own thread pool for executing possibly heavy-duty operations in handlePayload
Also stores parsing logic related to JobMessage and JobRequest