ddfs_util: report the size of the found file to the file handler

This will help the handler avoid another call to prim_file:read_file_info to get
the size of the file.
Merge pull request #553 from pooya/ddfs_util

ddfs_util: report the size of the found file to the file handler
disco.erl: remove the unused disco_url_path function
ddfs_gc_node: avoid multiple ets table lookups
ddfs_gc: introduce the foreach_file function

It goes through all of the files and calls the call-back function for all of
them (just like the lists:foreach) without capturing their return value.
disco: add plists as a new dependency for disco

This module will be used to parallelize some of the slow operations.
ddfs_gc_node: traverse through the volumes of ddfs in parallel
erlang scheduler: add the scl scheduler option to the slave nodes
ddfs_gc_node: avoid decreasing the priority of the gc process on slaves

Although this process is a background process, it is important for it to
finish in a timely manner.
Merge pull request #554 from pooya/ddfs_gc_improvements

some improvements to ddfs gc
job_coordinator: terminate a job if there is a scheduling failure in new_task.

This commit should resolve issue #553.
The kind of scheduling failures that arise from calling new_task are not
recoverable.

The job_coordinator cannot simply retry the failed task because it does not have
enough information about whether the previous submission was successful or not.
Merge pull request #559 from pooya/558

job_coordinator: terminate a job if there is a scheduling failure in new_task.

This closes issue #558
event_server: use processes for storing job events.

Instead of storing the events of the jobs in the status of the event_server, we
create one job_event process for each job and delegate the responsibility of
handling the job events to these processes. All of the operations still go
through the event_server, therefore, it is still a bottleneck.
event_server: add a function for getting the pid of the job_event_handler.

This handle can be used to directly query the job_event_handler (without going
through the event_server).
event_server: Move some more per-job stats to job_event.
job_event: clean up the code.
event_server: move the task_event to the job_event module.

Now these messages will not cause problems for the main event_handler. Although,
these messages still have to be sent from the slaves to the master.
job_event: fix a typo in the name of event_server module.
job_event: close the event file when done

When the job is done, we don't have to keep the job event log file open because
there will be no more events added to this job.
evnet_server: move the pending events to the job_event module.