Cluster 2.0

In 0.6.x the cluster module was just a small extension on the `node_process.fork()` function. The propose of this pull request is to make the cluster module easier to setup, without removing the basic functionality. It also add a lot of new functionality there make it possible for userland plugins to interact with the cluster module.

**Documentation:**
The documentation can be found [here](https://github.com/AndreasMadsen/node-1/blob/master/doc/api/cluster.markdown). 

**This request fix the following issues:**

- issue #2060 – _when the master gets an kill/quit signal it will do the same with the workers._
- issue #2073 – _made cluster silent._
- issue #2088 – _added method for gracefull worker and master shutdown._

**This request contain the following changes:**

- Added `.eachWorker(fn)` method.
- Allow workers to be another file, using `.setupMaster()`
- Allow parsing arguments to workers, using `.fork([env])`
- Internal messages won't be send to the `message` event
- Allow workers to commit suicide, using `worker.destroy()`
- Moved process from the `child_process.fork` to `cluster.fork().process`.
- Make the API in master and workers equal using an internal `new Worker()` object.
- Easy acces to worker details, inside the worker.
- Added `.disconnect()` method to make a gracefully shutdown
- Added events: `fork`, `listening`, `disconnect`
- Made cluster silent
- You can use `SIGTERM`, `SIGINT` and `SIGQUIT` on a worker
- Add `cluster.workerOnline` property to get how many workers there are online
- Support `SIGTERM`, `SIGINT`, `SIGQUIT` and `SIGCHLD` on master. 
- Create a `cluster.disconnect()` method.
- Create a `cluster.destroy()` method.
- `cluster.isWorker` and `cluster.isMaster` is now protected
- Kill all workers the moment the master exit
- Allow echo callback from both worker and master
- Allow echo callback to be used by userland
- Added a `workerID`, it's a number there will be reused when the worker spawn/respawn.
- Added a `uniqueID`, if is a unique number there will change for each spawn/respawn.
- Throw error when conflict between `.autoFork()` and manual `.fork()`.
- Prevent and detect respawn infinite loops, caused by errors in workers.
- Emit a `citicalError` event when a respawn infinite loops is detected.
- Added `startup` property to worker object.
- Added a `silent` option to the setupMaster to prevent output from workers to be showen in the master as outout.
- Add a zero-downtime restart method.
- When getting a `SIGHUP` signal the cluster will restart graceful.
- Added `settings` object to the cluster
- Added `setup` to cluster, this will emit when `setupMaster` execute.
- You now kill worker using `destroy` not `kill`
- The worker event `kill` is changed to `death` 
- Updated and improve documentation
- Added testcases (a lot of testcases)

**This changes was made in other modules:**

- To support `silent` option, the `child_process.fork()` has been updated to take `silent` as a option in the `options` argument. This is a very small change. 

**This changes will be included in the near future:**

- Fix issue #2194 – _But before that UDP port sharing must be suppored_
- Allow that the number of CPUs can change. This depend on issue #2265