Add Tweet bloom filters as extra query data.

Add libtwitter to provide shared Twitter utilities between space and
object host, currently only containing a bloom filter on tweet
terms. Add an object host query data lookup plugin that downloads
Tweet summary "meshes" and computes bloom filters on them. To do this,
update QueryDataLookupFactory to take an arguments string -- the bloom
filters need this to specify the number of buckets and hash functions.
Add per-node data containing bloom filters for Twitter terms.

Add per-node data classes for query processing that are the same as
bounding sphere + max object size, but also decode and aggregate bloom
filters. The main implementation is in libtwitter, but separate
classes inherit from it to support the space and OH because some
options need to be specified, but come from different places for the
two binaries. Use these new classes to register a few new handlers
that allow us to perform manual querying on the space server and rtree
queries on the client. The client option is currently only used as a
baseline since there isn't yet a query handler to take advantage of
the extra data.
Fix replicated extra query data.

Fix ReplicatedLocationServiceCache and
ReplicatedLocationUpdateListener to handle extra query data. Mainly
this meant just passing data through in the right places, but to get
at that data, the xLocUpdate interfaces are used. Updating these with
query_data + seqno methods also required updating the
PresenceProperties interfaces. Therefore, this also goes back through
LocationService implementations that stored query data separately from
other presence properties and makes them use the newly available query
data fields instead.
Add custom query data support and a Twitter term+region query handler.

Add custom query data support to the various proximity classes. First,
this requires the ability to pass custom query data to, and register
custom queries with, query handlers. It also adds callback support for
custom query data events on aggregates, allowing the data to be
propagated. This second step is critical for querying to work between
space servers or using replicated trees.

Add a new query handler implementation that queries by search term and
region. It uses the Twitter per-node data types that include a Bloom
filter. The query is parsed by the query handler from JSON and must
include a term and a region, but the region need only be 2D. It only
refines if it finds both the search term and the aggregate overlaps
the region. This is a fairly straightforward adaptation of the
RTreeCutQueryHandler or LevelQueryHandler with different criteria, and
additions to support the custom query format.

A few fixes were also necessary. CopyableLocUpdate was not copying the
query data properly, which wasn't noticeable until a query handler in
the OH tried to use the data. The ReplicatedLocationServiceCache wasn
not properly notifying downstream LocationUpdateListeners of query
data updates, so the data was not properly being passed into OH query
handlers. Const-ness was broken on a number of TermBloomFilter
methods. The TermBloomFilter was also missing a critical memset to 0
for the filter data in the constructor.
Fix MigrationMonitor to handle timeouts when objects are still in the region.

The MigrationMonitor is designed such that objects must always have a
next time to an event. If they aren't moving, this time should be
infinite. Since we set a fixed timeout, this fixes the timeout handler
to check one more condition -- that the object isn't still on the
correct server -- before invoking the callback which triggers the
migration.
Check that ClutterRenderer actors are valid before using them.

When ClutterRenderer handles an Invokable callback, it was blindly
using the result from get_actor_by_id. However, that can return NULL
if the actor with the specified actor ID isn't found. This change
follows all calls to get_actor_by_id by a check which ignores the call
and returns false if the actor isn't found.
Don't log invalid loc update messages.

Location updates aren't framed, so we don't know when they are
complete. Therefore, we already have support for retrying the parse
after getting more data if the first attempt to parse failed. However,
we were logging invalid messages if we couldn't parse them, but that
is much more common now as updates with extra query data can easily be
larger than the 1k default SST packet size. This creates too much
console spam. The lines are left in there in case they are handy for
debugging.
Fix missing query data update notification in CBRLocationServiceCache.

Add a notification to LocationUpdateListener about updated query
data. This had been added to ReplicatedLocationServiceCache,
supporting passing this data to client queries, but was missing in
CBRLocationServiceCache, so the server was not properly getting
updates.
Include query data updates with changes to object meshes.

Update the QueryDataLookup interface to handle requests including only
a mesh. Use this to make HostedObject lookup query data, if necessary,
when updating meshes. Without this, the query data would potentially
be out of date, using the value first provided upon connection.
Make TwitterAggregateManager more robust to ordering issues.

Because we get object creation/deletion and aggregate
creation/update/deletion from different sources on different threads,
perfect ordering isn't guaranteed. Sometimes, for example, and
addChild(aggregate, child) can be called before the
objectCreated(child). This makes either function capable of creating
the entry for the child and makes sure both mark the appropriate
objects as dirty when the signal is received.
Fix node updates in TermRegionQueryHandler.

Fix TermRegionQueryHandler::updateObj, invoked when it sees updates
from the LocationServiceCache, to also update internal nodes. This is
important for replicated trees, which may never see leaf node updates
and so might otherwise never get properly updated state at internal
nodes. Also update libprox to a version which has equivalent fixes for
some other query handlers.