Change RexsterCluster server-host configuration

RexsterCluster now does the following when configured with
<server-host>0.0.0.0</server-host>:

1. Attempt to replace the 0.0.0.0 value with
   InetAddress.getLocalHost().getHostAddress().

2. If #1 failed, then default to "localhost"

I made this change because JGroups was attempting to send UDP
datagrams to 0.0.0.0 (and failing).
Add JChannel hostname logging

Most importantly, this commit prevents
HintedRexsterClient#openConnection(String) from silently swallowing
exceptions and returning.  Now exceptions during openConnection are
logged at the warn level.  Null is still returned.
Gracefully handle nulls in RexPro response msgs

I was getting NullPointerExceptions off the statement
"msg.Results.get()" for some queries issued through
HintedRexsterClient.  This commit replaces the NPE with returning an
empty results list.
Add toString() to HintedGraphs
Extracted an interface from ElementRange + bugfix

The class formerly known as ElementRange is now IntervalElementRange.
ElementRange is a three-method interface (which IER implements).

I made this change to ease support for modular hintspaces.
IntervalElementRange's contains(x) implementation is basically this
condition:

  lower.compareTo(x) >= 0 && upper.compareTo(x) > 0

This is awkward with modular arithmetic.  The condition can work with
modular arithmetic by storing lower less than zero or upper gte the
modulus (when upper < lower), but this requires binary arithmetic and
there's no real fundamental need for it.  Extracting the interface
allows substituting an alternative contains(x) implementation where
appropriate in Titan.

This commit also fixes a bug that could erroneously cause no ranges to
match a valid hint.  The old implementation of contains(x) implicitly
assumed that the only positive value returned by compareTo(...)
implementations would be one.  The actual compareTo(...) method
contract is more permissive.  Implementations can return any integral
value.  Practical example: Titan's StaticBuffer compareTos sometimes
return values with absolute values greater than one.
Make incoming HintedGraph message writes volatile

This is a necessary thread safety change.  Prior to this commit, there
is no guarantee that the Rexster thread responsible for routing
queries based on hints will ever see incoming messages with
HintedGraph range data from its peers (which are written by a separate
thread).  This manifests as RexsterCluster nodes that seem to "ignore"
hint messages received from peers.  I launched a two-node Rexster test
cluster ~5 times, letting it idle for 3~20 minutes each time, and not
once did incoming messages dumped by the JGroups receiver thread to
log4j become readable in the Rexster query routing thread.
Stop swallowing hint processing Exceptions

Swallowed exceptions swallow manhours :(
Adding hint-related logging statements

I've enclosed debug() and trace() calls on the potentially
performance-sensitive path in isDebugEnabled() and isTraceEnabled().
Some of the log strings are potentially costly to generate, and the
Log4j API that Rexster uses requires generating them even if trace and
debug are disabled (unless they are gated by these boolean checks).