Prefer Titan's Configuration to Hadoop's in Faunus

This commit:

* Replaces uses of Hadoop's Configuration object with a Titan
  ModifiableHadoopConfiguration that supports the ConfigOption API in
  many classes

* ConfigOption-ifies several internal Faunus config options which are
  not user-facing but which nonetheless share the Hadoop Configuration
  during MR task execution and should hence be part of Faunus's
  ConfigOption tree

* Optimizes ModifiableHadoopConfiguration to cache the values of
  track-paths and track-state.  These options are read hundreds of
  times a second in some workloads as FaunusVertex objects get
  deserialized by Hadoop and fed into a mapper/reducer, and each of
  those invocations calls Configuration.get on the track-paths and
  track-state options.  The Hadoop Configuration backing that request
  does (uncontended) synchronization in its getProps method; the
  overhead of these repeated synchronizations in EdgeCopyMapReduce is
  enough to make its reducer run many times slower than necessary.
  Now these values are cached to avoid uncontended synchronization
  inside Hadoop's Configuration object when checking state/path
  tracking.
Lazily initialize BasicConfiguration.isFrozen

This is another Faunus-specific config performance tweak intended to
work around synchronization costs in Hadoop's Configuration
implementation.

BasicConfiguration's constructor looked up the hidden.frozen key in
its backing store during construction.  When the backing store is an
org.apache.hadoop.conf.Configuration, this incurs at least uncontended
synchronization.  This commit delays the cost of that synchronization
by lazily initializing the frozen class field the first time it is
read.