Make callback for checking if object should be tracked optional for all query handlers.

Unless objects are being split up somehow, this isn't necessary, so
it's nicer to be able to omit it and just default to including
everything.
Make LocationServiceCache Iterator's void* constructor explicit.

Avoid accidental conversions to an Iterator.
Fix missing include which could cause a compiler error if AggregateListener was included before any other libprox headers.
Expose handler IDs from QueryHandlerBase.

Includes a warning about being careful with it since multiple handler
IDs may be used for the same query handler.
Expose handlerID publicly from geom QueryHandlers.
Merge remote branch 'origin/master' into manual-query
Ensure objects are tracked in the LocationServiceCache while they are in QueryEvents.

Make QueryEvents track the LocationServiceCache their parents come
from and make sure the LocationServiceCache maintains a copy of their
data until the QueryEvent is destroyed. This ensures that results
always have valid data to be used. Without this it was possible, for
example, to get a set of query events for which some aggregates had
been created, reported to the querier, removed, and destroyed. By the
time the querier is looking at the results some elements were missing.

This also requires additional methods in LocationServiceCache that
expose a raw reference counting interface without requiring the
Iterator resulting from regular tracking to be stored and used to
reduce the tracking refcount.
Cleanup warnings and fix missing return value in QueryEvent::operator=.
Fix ObjectLocationServiceCache to handle refcounting.

It was asserting that an object did not already exist, but the use of
refcounting means that it's possible the object will be held in the
cache after its removal was requested. Instead, allow udpating but
assert that it is marked as being dead and only being cached due to
non-zero refcount.
Fix a missing addition and removal for replicated trees with cuts through the node.

When replicated trees had nodes split, cuts were being updated to add
a new node, but the events weren't properly being added to the
results, which are needed so the children that are put into the new
node will have a parent.

This is progress towards getting replicated trees to work properly
without lift cutting (removing the prepare step where we still lift
cuts for the sake of replicated trees), but still doesn't fix it. At a
minimum we'll still need to fix issues with moving entire trees around
when splits occur above cuts, without having to delete and recreate them.
Merge remote branch 'origin/master' into manual-query
Add cxxtest and incorporate, starting with QueryCacheTest.

Add a submodule for cxxtest, add build support for finding and using
cxxtest, add a libprox_tests binary. Add a simple set of tests for
QueryCache to start with, which revealed a minor typo bug in
QueryCache::remove since it isn't currently used in the implementation
so it was never instantiated and compiled without the test.
Add simple tests for regular geometric (solid angle) query handlers.

Add TestLocationServiceCache to provide a LocationServiceCache for
tests. It isn't thread-safe and runs notifications immediately. Add
GeomHandlerTest as base class for BruteForce, RTree, RTreeCut, and
RTreeCutAgg HandlerTests since they all perform the same
tasks. However, it has to be careful about testing expected result
counts since RTreeCutQueryHandler with aggregates enabled can return
more results than the handlers which are answering the query
precisely. This doesn't thoroughly test the correctness of queries
across a variety of queriers and object sizes, just that the basic
functionality of getting (and removing) results works.
Split the implementation of the query handler test so some of it can be reused for manual queries, keeping the boilerplate to a minimum.
Add a few simple test cases for manual querying.

In the process, found that when the root is created the event wasn't
being pushed immediately, so you had to wait for a tick to pass. In
the interest of getting the manual querying to be fully event-driven,
this also changes the behavior to push the event immediately.
Add simple test for tree replication.
Make build_all_configs script also run tests.
Fix prox static lib to build if either tests or proxsim binaries are requested.
Add start of test suite checking replication of tree from a manual query.
Add test for removal of nodes along cut, fix when not lifting cuts.

Add a test that checks correctness of replication when nodes along the
cut are removed. This exposed a problem where we were lifting cuts
when it wasn't necessary. This fixes that so the node is simply
removed via another cut callback. However, for simplicity, if removing
the cut node would require adding the parent (because the node is the
last child and not doing so would leave a gap in the cut), we fall
back to cut lifting in order to keep the new callback simpler. This
also changes another location we were still using cut lifting
unneccessary, in RTree_condense_tree, to use the same approach.