This is a big one.  Please read the commit message.

There are two major contributions to this commit.  The first is full
xattr support.  Now, applications can use the POSIX xattr API to create,
read, set, and delete xattrs on Syndicate files.  The MS holds copies of
them all, and UGs transparently and coherently cache them on read.
setxattr conflicts are handled in a last-write-wins manner.  It is
expected that UG driver code will use xattrs to store persistent
per-file information, so the xattr caching protocol is optimized for
gets and sets (but not lists).

The second major contribution is the initial integration of the UG
driver model into the UG itself.  There are:
  * connect_cache()
  * write_block_preup()
  * write_manifest_preup()
  * read_block_postdown()
  * read_manifest_postdown()
  * chcoord_begin()
  * chcoord_end()

The read(), write(), trunc(), and chown() methods call the above code
where appropriate, so the driver has a chance to intercept and process
data before Syndicate handles it.  In integrating the UG driver with
these methods, I had a chance to refactor and simplify the code for
write() and trunc().  The driver management code, which handles
downloading and reloading the driver automatically, lives in
libsyndicate in closure.cpp.  The UG (and eventually the AG) leverages
it to load and dynamically link up-to-date driver code at runtime.

An important subtlety in the driver design is that Syndicate caches
block data before it is processed, not after.  This is important for
realizing end-to-end encryption:  if the driver implements encryption
and decryption algorithms for blocks, the driver model ensures that
only ciphertext will be cached to disk.

While not tested yet, this commit includes changes to syntool.py to
allow it to handle UG driver binaries (which will, in the future, be
extended to AG drivers).

Beyond these two major contributions, there are some smaller things of
note:
* Use the Syndicate public key to authenticate OpenID RPC calls within
the gateway code (previously, only syntool.py did this).
* Allow the gateway to supply a local copy fo the Syndicate public key,
if available.
* Removed mkfs.cpp, mkfs.h.  We won't be needing these.
* Small bugfixes in many places, including in xattr handling in the MS,
and the response_* API in the MS.

Still to come:
* sample UG drivers (UG/drivers) and SDK
* concurrency tests with processing xattrs
* driver fault and reload tests (once samples are ready).
Fix issue #72.  Remote write evicts locally cached blocks if they were
remotely overwritten.
Implemented closure parsing and loading for Volume-wide closures.
Volume-wide closures implement the connect_cache() method, and do not
have secrets.  This is meant ot allow the user to deploy a Volume-wide
cache driver, independent of the gateway implementation (i.e. the
volume-wide closure is handled by libsyndicate).

I also added a stub Volume closure for CoBlitz
(libsyndicate/drivers/coblitz).  This commit also includes bugfixes to
syntool.py's parsers (ms/common/object_stub.py) to check the validity of
a closure and serialize it properly.
Make libsyndicate/closure.cpp build with an older version of libjson
(0.9), which is found in Ubuntu 12.04.
Added Client class to syntool, to make it easier for libraries to import
and access the Syndicate SMI methods.  Also, update the INSTALL file
with extra information about Python bindings for scrypt.
Allow reading users by ID in syntool, but with the caveat that deleting
a user by ID will prevent it from clearing out the associated keys.
Update README.md
Have the build system detect which distro we're building on, so it can
choose the correct JSON library headers and library names.
Merge branch 'master' of https://github.com/jcnelson/syndicate
WIP: mirror OpenCloud observer and Django models for Syndicate to
GitHub.  Also WIP: Syndicate sliver control daemon, for receiving
commands from the OpenCloud Syndicate observer.
Improve cross-platform building; add fs_core* to the UG driver model
arguments; fix bugs in the closure parsing in syntool; update INSTALL
documentation
add libsyndicate CoBlitz driver config and secrets (for building)
Untested, WIP: UG encryption driver
Add initial data modified for Syndicate's new models
Update RG to make it more ameanable to being supervised.
Add syndicate.util.watchdog to consoldate process supervisor code.
WIP: syndicated.py
More work on Syndicate control daemon "syndicated.py"
* consolidate watchdog, daemonization, and configuration management code
* make syndicate-ug watchdog to spawn and manage syndicatefs instances,
while keeping security tokens hidden from /proc
Update RPM build scripts
Merge branch 'master' of https://github.com/jcnelson/syndicate
Improvements to Syndicate OpenCloud glue code:
* syndicated.py starts syndicate-ug and syndicate-rg watchdogs correctly
* syndicate-ug and syndicate-rg each start their respective gateways
correctly
* syntool.py, when used as a module, correctly loads and parses command
arguments from syndicated.py
* reduce overall logging complexity (TODO: test log files)
* add administrivia files to syndicate_observer, like __init__.py and
requirements.py
* separate out key storage logic from syntool.py and put it into
syndicate.util.storage
* plug memory leak in libsyndicate/crypt.cpp
* let syndicatefs, syndicate-httpd, and syndicate-ipc parse command-line
arguments (argv) from stdin (so we can pass secrets safely from watchdog
to gateway)
* correctly pass FUSE arguments to libfuse in syndicatefs
Merge branch 'master' of https://github.com/jcnelson/syndicate