docs patch
Adding six hour fork timeout to Surefire config

This is mostly for our CI platform, which is capable of detecting hung
builds based on the amount of time passed since their last line of
output, but which nonsensically reliant on a nonstandard plugin to
kill the jobs once flagged as hung.  And the plugin only works on a
manual bring-your-own-hardware install, not the CI-as-a-service cloud
option.

This is specifically for a strange deadlock in
TransactionalGraphTestSuite (often line 484 when it deadlocks and BDB
detects the cycle) that shows up in CI but not on my workstation.  The
root cause wasn't completely obvious at first read.
Make ES client version check defensive

fixes #781
Removed vestigial config keys from Hadoop1Compiler

fixes #787
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
Making HadoopPipeline.submit return Tool status

This submit method is a thin wrapper around ToolRunner.run.
ToolRunner.run returns the integer exit status produced by the Tool
implementation it executes.  Prior to this commit, submit returned
void and threw the status away.  Now the status is returned from
submit.  This change is groundwork for a new integration test method
related to #806 and #826 that will submit a HadoopPipeline that
submits a typical graphson-to-sequencefile dump job and needs to know
whether the job succeeded.
Adding a test single-map/no-reduce job

This test will detect a regression on #806 / #826.  I checked that it
failed when I locally reverted
520e7c650e08ebc2d6b86bfa1515f032006259f4 (the commit that fixed this
bug in manual testing).
Improve Hadoop job output dir log message

The output dir for each individual job is now logged at DEBUG, instead
of logging a string prefix common to all jobs that wasn't actually a
directory or file by itself.
Adding test for #835

This fails under Hadoop 1 (but not 2) due to the bug reported in #835.
Fix up next.
Put context.getConfiguration calls behind compat

Converting calls to getConfiguration() on Hadoop Context instances to
DEFAULT_COMPAT.getContextConfiguration(<instance>).  Fixes #835.
Update old RDF config value in example Hadoop props

The config value "n-triples" in rdf-input.properties should have been
N_TRIPLES.
Adding test for #786

This test runs in the aurelius-release profile.  I implemented it as
an Expect-based integration test in titan-dist because that was the
most straightward approach within the existing test harness that
allowed for restarting the JVM in the middle of the test logic, which
is necessary to catch a regression on this particular bug.
Move titan-dist test resources to test-classes

The titan-dist pom prior to this commit copied test resources to the
target/classes directory.  This doesn't get included in any of Titan's
release assemblies right now, but it's fragile.  Moved these resources
-- none of which should ever be included in a release archive -- to
target/test-classes to better reflect their function and reduce the
risk of accidental inclusion in future releases.
Add test of gremlin.sh gremlin-script.groovy

This test checks that gremlin.sh interprets a single command-line
argument, when present, as the path to a script file to be evaluated
and whose additions to the scriptengine variable binding will be
available at the prompt eventually presented to the user.

The sample script used in the test sets and checks these four
variables:

test_i = 2 + 2
test_g = new TinkerGraph()
test_hadoop_class = HadoopFactory.class
test_titan_class = TitanFactory.class

This is for #824
Make gremlin.sh process an arg as a gremlin script

Fixes #824
Moving TitanGraph instantiation into RecordReaders

This should address #817.  According to that issue, Spark (and maybe
MR?) creates an InputFormat when starting a workload just to get the
splits, then throws the IF away.  Creating a graph in IF.setConf
therefore lets an unclosed graph go out-of-scope in this scenario.

This commit implements @skavulya's suggestion to move graph
instantiation into RecordReader.initialize for both the HBase and
Cassandra RRs implementations.
Failing test executing a static initializer cycle

This test triggers a unsafe cycle of dependencies between static
initializers in two classes, Backend and GraphDatabaseConfiguration,
by invoking TitanFactory.open with a shorthand parameter first thing
after the JVM starts up.  This cycle is not triggered if a file is
passed in.  This test is for #831.
Breaking static initializer cycles

GraphDatabaseConfiguration no longer contains references to Backend.
Those references have been replaced by two new self-contained enums
representing storage managers and index backends.  Fixes #831.