Remove Kryo 2.24.0 dependency and use KryoSerializer to instantiate Kryo in DistIOUtils

Kryo 2.24.0 was clashing with Spark's own Kryo dependency
Upgrade to Hadoop 2.2.0 and make attendant changes
Use broadcast for Language object; wrap mapper using SparkUtils.kryoWrapFunction

Fixes a serialization error regarding lang in DistConfigLoader.
Check if cache exists before reading it; do not count()

count() forces early evaluation of RDD = performance penalty
Make caching intermediate RDD[WikiPage] configurable
Build RDD taking configured num-slices into account.
Replace XmlInputFormat with custom DBpediaWikiPageInputFormat

Added necessary files too - Writable impl. and unit test.
Make configurable which StorageLevel to use for RDD.persist()
DistConfig will take URI to extraction config file as ctor argument
Add mkdirs() method to RichHadoopPath
Write outputs in parallel using custom OutputFormat.
Move ontology, disambiguation, commonsSource vals to createExtractionJob method, outside context anon class.

Bringing language-independent private vals _ontology and _disambiguation, AND the private val _disambiguation from inside the anonymous DumpExtractionContext class is required to prevent serialization errors.
Add context parameter for getBaseRecordWriter()
Register all the classes that Kryo needs to serialize
Fix docs, imports and formatting for Writables
Simplifiy WikiPages to Seq[Quad] mapping code, add accumulators and broadcasts.

Not only does this allow us to compute extraction stats, this improves performance as well.
Ensure that checkOutputSpecs does nothing
Make getSparkContext synchronized - multiple threads might access this.
Remove duplicate hadoop configuration creation block
Remove DistRedirects$RedirectFinder registration and remove duplicates