Bump elasticsearch to 1.2.1, lucene to 4.8.1, spatial4j to 0.4.1

Note this explicitly enables dynamic scripting, which was disabled
in ElasticSearch 1.2.0. This is needed in order to remove fields.
The reasoning behind this change can be found in
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html#_enabling_dynamic_scripting.
add Solr indexing backend.
merge Lab41 Solr integration
Global:
* Remove duplicate httpcomponents from pom.xml
SolrIndex/GeoToWktConverter:
  * Change StorageException to BackendException
  * Implement missing restore/getFetures methods
  * fix mutate and query methods to support multiple cores
add TTL support for Solr (document level)
add LBHttpSolrServer support for SolrIndex
FaunusSerializer instantiation test

Creating a new FaunusSerializer for every edge processed by
EdgeCopyMapReduce ends up creating a separate Kryo for each of those
edges and consuming more than half of the CPU time under certain JVM
and workload configs.  This commit is an experimental change limited
to EdgeCopyMapReduce.java and is not a general fix -- just testing to
see if it alleviates the problem in testing.
Share one StandardSerializer throughout Faunus
Stop forcing default jobdir value to null
Make copyFromLocal avoid truncating local files

Copying to and from the same file on the LocalFileSystem would
normally result in truncating the file.  Now
HadoopLoader.copyFromLocal attempts to detect this condition, log a
message, and return without doing anything.
Set non-null default value for Faunus jobdir
ConfigOption-ify EdgeCopyMapReduce
Rename ScriptIOFormat config option

"file" is now "script-file"
Add @Override on methods in a RecordReader impl
Rename Faunus's Titan IOFormats

consider the following classname (before this commit):

   com.thinkaurelius.titan.hadoop.formats.titan.cassandra.TitanCassandraInputFormat

Repetition of "titan" has kind of gotten out of hand during
refactoring.  This commit removes the "titan" between "formats" and
the hbase/classandra subpackage names.

The Faunus config files are _not_ updated in this commit.  I have
config file changes from multiple code commits mixed in my working
copy.  Going to commit those changes all together after the code
rather than try to manually diff-edit properties files with `git add
-i` (and probably get the diff-edit wrong).
Faunus cfg file updates
Reduce num_tokens in zipfile cassandra.yaml

num_tokens=256, the upstream default, results in Faunus firing off at
least 256 mappers for every job, even if it's just Graph of the Gods.

Reduced num_tokens to 4 in the cassandra.yaml file that ships in the
Titan distribution archives, added a comment recommending increasing
it in production deployments.  This file is only used by titan.sh and
by the embedded Cassandra adapter right now.
Update titan-cassandra-es.properties

Since titan.sh forks a standalone ES process, I think it's now
reasonable to make titan-cassandra-es.properties connect to that
forked ES process rather than start up its own embedded process.

The config options to start ES in embedded mode (the old behavior for
this config file) survive as comments in the file.
Fix #699

BerkeleyJETx should allow a null tx reference to support
configurations where transactions have been disabled
Rename two addVertex overloads that take a label

Fix #702

Lead up to this commit:

TitanTransaction.addVertex(VertexLabel) and addVertex(String) both
take a vertex label argument.  TitanBlueprintsTransaction and TBGraph
define addVertex(Object).  The Object overload doesn't contain any
implementation logic by itself; it does instanceof checks on the
argument and calls another addVertex overload based on what it finds.
If the argument is a String, it calls the
TitanTransaction.addVertex(String vertexLabel) overload.

This behavior is incompatible with Blueprints.  Calling loadGraphML
(which in turn uses BP GraphMLReader and BatchGraph) on a file just
containing <node id="1"/> results in Blueprints calling
TitanTransaction.addVertex(Object) with the String "1".  Titan sees
that the argument is a String and attempts to interpret "1" as a
vertex label.  However, the implicit contract/intent on the Blueprints
side was to have "1" interpreted as a user-assigned ID (or, in the
specific case of Titan, to have Titan ignore that ID argument entirely
and self-assign an ID).

This commit renames the two TitanTransaction.addVertex methods that
take a vertex label to addVertexWithLabel.  It also modifies
TitanBlueprintsTransaction.addVertex(Object) to ignore arguments of
type String.  Now only addVertex arguments of type Number or
VertexLabel are considered by Titan.  Arguments of other types are
ignored.