Hadoop compiler log additions & shared code reuse

This extracts a common abstract superclass for the Hadoop1Compiler and
Hadoop2Compiler subclasses.  The abstract superclass is compiled under
Hadoop 2 but contains only code with binary interop between both major
versions, so it's in titan-hadoop-core.

This commit adds more log messages to the Hadoop job compiler
(including the new abstract base class).  It logs when it creates
jobs, configures input/output formats, and keys.  Before executing any
jobs, it also dumps the number of total jobs in a workload, then
prints each each numbered job in the workload sequence along with the
job name.  When executing jobs, it prints the job number (in the
workload sequence) and the name.  That's all at INFO.  With DEBUG
enabled, input format, output format, key/value classes, and output
paths are also logged.

To make the above changes useful in the default configuration, this
commit also modifies log4j-gremlin.properties to set the compiler
class logger thresholds to ${gremlin.mr.log4j.level} (INFO by
default).
Set job output k-v along with Mapper output k-v

Hadoop2Compiler (but not Hadoop1Compiler) uses ChainMapper and
ChainReducer to string work together inside a single job.

Hadoop2Compiler has an addMap method that creates a reducerless job.
This method failed to set the job's output key and value classes, nor
did ChainMapper.addMapper, so these jobs used the defaults that ship
with Hadoop.  These are almost always wrong for Titan-Hadoop jobs.

Some output formats don't care about the configured k-v classes
(e.g. TextOutputFormat), but SequenceFileOutputFormat definitely does.

This change sets the job output k-v classes to match the Mapper k-v
classes passed into Hadoop2Compiler.addMap.  If a reducer is later
added to the job, ChainReducer.setReducer overwrites the job output
k-v, so I think this is safe.

fixes #806
fixes #826
HadoopXCompiler cleanups

Commented code removal, import cleanups, unused variable deletion