Add Application::multiThreaded(callback) method

This method allows a function to be converted to a multi-process
friendly function. Such function will be properly executed on
all running processes simultaneously.

Behind the scenes, the master process coordinates the internal
communication between processes, and passes any arguments to
all processes, providing a totally transparent behavior.

The arguments received by the callback should be able to be
serialized to JSON, since node's IPC serializes data into JSON
before sending to other processes.

The method returns a function which does the following:

1. If Master: tell all workers to run callback with args

2. If Worker: send to master which will subsequently tell
   all workers to run callback with args.

Example:

  var fun = app.multiThreaded(function(val) { ... });

  fun(99); // Will run function with arguments on all processes

This method provides a fully transparent way to working with apps
that run on multiple process, making it very simple to run call
and synchronize between all running processes.

It is best used after all workers are up, because it relies
on the available workers reported on node's cluster module.

The workers_up event can be used to ensure all workers are running.