Explicitly track readiness of worker processes

* Version bump to v0.4.0

* Explicit worker.ready() after init and worker.start() before job

* New WorkerProcess events that narrate worker state
    * 'initializing', 'ready', 'working', 'recovering', 'exiting'

* Pool `drain` event renamed to `idle`

* Proxy worker and job events through Pool

* Pool.spawnWorkers method to pre-spawn all worker processes

* Attempt to spawn new worker when all workers are busy

* Assign IDs to most objects, handy for debugging

* Reworked & new tests to account for explicit event changes

* Add node v0.10.x to travis test matrix

* Everything runs on events & listeners, no more tangled method calls
  between Pool / Job / WorkerProcess

* Misc cleanup & simplifications