Create separate class to execute jobs

This is a proposal for #5. Creates a separate class to execute the job instead of doing the execution inside the worker. This allows us to have different execution mechanisms, from the current "just run", to a forking runner and in the future other threaded runners (that would be better suited for JRuby and Rubinius).

This is far from being a full implementation (and still lacks tests for forking more than one worker at a time) but I think it would be nice to have it here so we can discuss this before I dig deeper into the rabbit hole.