Handle zero upper partition bounds

VertexIDAssigner reads the first four bytes of key ranges provided by
getLocalKeyPartition as ints.  It then unsigned right shifts the ints
by two bits each to make them effectively 30 bits wide.  It does some
arithmetic on the ints to preserve inclusive-start and exclusive-end
semantics and then passes them to PartitionIDRange's constructor.

Here's the computation done on each range-end int:

  partition[1] = (partition[1] >>> 2) - 1;

If the original partition[1] value is 0, this results in
Integer.MIN_VALUE.  Because the partition width is 30 bits, this value
is invalid (too wide since the MSB is set).  This value leads to a
precondition failure shortly after in PartitionIDRange's constructor.

I think the intent is to follow the subtraction by zeroing the two
most significant bits, simulating 30-bit wide unsigned integer
arithmetic and allowing underflow.  So this commit adds a bitmask
after subtraction like so:

  partition[1] = (partition[1] >>> 2) - 1;
  partition[1] &= 0x3FFFFFFF;

(cherry picked from commit 874fa65e3ec0d4425f6ebe59fe39c68accb4e105)

Conflicts:
	titan-core/src/main/java/com/thinkaurelius/titan/graphdb/database/idassigner/VertexIDAssigner.java
Backport CASSANDRA-6190

Fixes #548

Reference: https://issues.apache.org/jira/browse/CASSANDRA-6190
(cherry picked from commit 1b81b3c151b033967451b38840c8e9f8612191f4)
allow passing int arguments to the long constructor arguments for astyanax reflection

(cherry picked from commit 0f84b21eab07f79495c504dd679e6e778bbb4ae7)
use all of the listed hosts for Thrift connection pool

(cherry picked from commit 7795d03659f6d05dd856f6c172f5a392e4cca874)

Conflicts:
	titan-cassandra/src/main/java/com/thinkaurelius/titan/diskstorage/cassandra/thrift/CassandraThriftStoreManager.java