Add metrics system for Spark

This patch creates a metrics system for Spark based on Codahale's metrics library. There are some design considerations:

* Same configure format with Hadoop metrics2 configuration.
* Pluggable metric source and sink, also user defined source and sink can be configured and added.
    * JMX sink is enabled by default.
    * Default metrics source are:
        * Master, Worker (standalone mode)
        * Client Driver (DAGScheduler, BlockManager)
        * JVM instrumentation
* Less intrusion to original code.

We've already monitored by Nagios using this patch internally, but some more metrics are needed. We put this up for review and will continue to improve it. Any comments would be appreciated :-)

Thanks
@xiajunluan , Jerry Shao