Revert "add Subscription.subscribe method"

This reverts commit 3983b9ce97c29be54ac16e1399aed4c864fc450f.

The semantics of this method weren't well defined, and it turned out
to be less useful than I expected anyway.
fix client build on OS X
fix handling of aggregate expressions for "empty" diffs

When diffing two revisions such that there are no changes among the
columns being aggregated in an aggregate expression, we must
synthesize a result which is the "base" value for the aggregate
(e.g. zero for count()).  Previously, we just returned null.
reorder code in Servers.AsynchronousRevisionServer.merge

This commit swaps the order in which we tell the backing server and
any listeners about a merge.  Neither order is more "correct", but
telling the listeners first makes more intuitive sense.
update Revision.queryAll to allow queries on a subset of an index
fix merges for a certain case of parallel inserts and deletes

There was a bug such that when a delete and an insert occur in
parallel forks involving primary key values that share a non-empty
prefix, the insert would be lost when the forks were merged.  This
fixes it.
fix NPE when merging where delete happened in both forks
fix thinko in EpidemicServer.updateView, etc.

We should have been passing a NodeID to
directlyConnectedNodes.contains, not a NodeKey.
add TreeServer

This is useful for network topologies where there are no cycles, in
which case there is no need for each node to keep track of the states
of all other nodes -- only the ones it is directly connected to.
various bugfixes, mainly concerning remotely-added indexes and views

Although we were handling locally-added indexes and views pretty well,
the case where an index or view was added via a diff deserialized from
e.g. the network was not handled properly, since we were doing "=="
comparisons instead of ".equals", and we weren't considering low-level
inserts of indexes or views via e.g. RevisionBuilder.insert instead of
RevisionBuilder.add.
Merge remote-tracking branch 'github/master'
tweak EpidemicServer debug logging
fix bug in Servers.AsynchronousRevisionServer.merge

We must immediately update the base revision after accepting a local
merge in order to avoid spurious conflicts when additional merges are
applied to the same data before the asynchronous task to update the
base revision is run.
fix scan creation for isNull expressions
don't include internal tables in MyRevision.toString
add Table.serializable and Column.serializable fields and fix some view update bugs
provide an informative message when throwing ForeignKeyExceptions
allow deleting using a (possibly empty) subset of the primary key in MyTableBuilder
allow a RevisionBuilder to be reused after a commit
Adding gradle build system into repository

- Update README with markdown syntax
- Add start/stop server functionality
- Added start/stop and updated documentation
- Update README
- Try to fix headings of README
- Move parent server project to server subdirectory
- Add server build file into repository
- Update README with restructuring changes
- Moving server/* to root again.
- Move unit test to correct location and update build.gradle
- add junit test dependency
- Move source files to standard locations
- Update gradle wrapper to 1.3
- Remove gradle.properties
- Remove duplicate dependency section
- Update task dependency style to new standard