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
Initial implementation of worker kill timeouts

* Pool options for timeouts that can kill assumedly hung workers while
  initializing, working, and recovering

* respawn_wait option for Pool, throttles respawn of workers in case
  there's a persistent error condition causing exits

* new timeout event from WorkerProcess

* Tests
Version bump to v0.4.1
Merge pull request #1 from lmorchard/idle-workers

Idle workers