2007-02-26: Implement working stubs of EXCHNAGE_ID and CREATE_SESSION,
	including some replay code.
2007-02-27: Implement working stub of SEQUENCE.
	Add proper channel_attr checking in CREATE_SESSION.
2007-02-28: Add proper binding_opts handling in CREATE_SESSION.
	Implement working stub for SET_SSV.
2007-03-01: Remove status from encode_status return.
	Add framework for size checking (w/o actually doing the checking).
	Complete replay code.
	Framework changes that allow SET_SSV to return a valid digest.
2007-03-02: Update to draft-09
2007-03-05: Update to draft-10
	Implement working BIND_CONN_TO_SESSION stub.
2007-03-06: Start working on mount and fs framework.
2007-03-07: Continue fs framework.
2007-03-08: Have rough fs and mount framework in place.
	Add some attribute handling stubs. Can now mount with linux client.
2007-03-09: For debugging, add sufficient stubs to cd and ls mounted fs.
2007-03-30: Add minimilist test framework
2007-04-02: Work on rpc layer to pass needed info to nfs layer
2007-04-03: Create a usable client framework
	Join server/client code into ConnectionHandler
2007-04-04: Start on soldifying security framework
	Fix filter_opaque_auth bug - gss encodes opaque differently,
	        need to filter parent.
	Add RPCReply Exception, which greatly simplifies some things
2007-04-05: Debug from code reorg caused by RPCReply
	Add timeout to listen. (Eases debugging, otherwise client
	        goes into unresponsive hang when server crashes.)
	Work on AuthGss enough to mount server with -osec=krb5
2007-04-06: Finish AuthGss.check_auth()
	Add secure_data/unsecure_data to AuthGss.  This enables -osec=krb5i,
	        but seems to be a problem with gssapi.unwrap, so no krb5p.
	Create a rough block.py
2007-04-09: Create working stubs of GETDEVICEINFO and GETDEVICELIST
2007-04-10: Work on AuthGss.init_cred, reorg some code to handle
2007-04-11: Fix bug in DeferredData.wait() - check for fill before waiting
	Fix bug in FancyRPCPacker and FancyRPCUnpacker - don't overwrite
	Fix various minor bugs caused by gss reorg
	Start adding to gssapi.i file.
2007-04-12: Finish AuthGss.init_cred
	Change gssapi output from dict to class, raising exception on error.
2007-04-13: Experiment with adding classes to gssapi.i
2007-04-16: Change AuthGss to use new class-based gssapi interface.
2007-04-17: Reorg code into independent modules.
2007-04-20: Do REPLY checking and data unwrapping.
	Client can now do krb5 and krb5i.
2007-04-23: Add rough gssapi.wrap/unwrap. Client and Server can now use krb5p.
	Add EXCHANGE_ID tests.
2007-04-24: Pass principal down from rpc layer to nfs4 server.
	Add some CREATE_SESSION tests.
	Add some SEQUENCE tests.
2007-04-26: Add StateTable, and a minimalist op_open() to test it.
	Have op_open do a CB_NULL to minimally test delgation framework.
2007-04-27: Fix StateTable by adding FileState layer.
2007-04-30: Rewrite state again, put it into nfs4state.py.
	Start real delegation framework.
2007-05-01: More delegation framework work.
2007-05-02: Write callback server framework.
	Fix xdrgen bug caused by ply upgrade - 
	    t.lineno was moved to t.lexer.lineno
	Create commoncode.py
2007-05-03: Client-side delegation handling.
	Fix xdrgen bug - it was ignoring eg "typedef state_owner4 open_owner4;"
	Rewrite nfs4_ops to self generate, and avoid using class functions.
2007-05-04: More client-side delgation handling - cb_hooks
2007-05-07: Create RWLock()
2007-05-09: Create op_read and op_write
2007-05-10: Finally get StubFS_Disk working
2007-05-11: Add resolve() method to block volumes
2007-05-15: Add close() method for client connections
2007-05-17: Add REMOVE and CLOSE to server.
	Add _maketree to testserver
2007-05-18: Fix a sync bug - needed to propagate fattr4_change up mounts
	Fix bug with fattr4_time_*_set - settime4 can't be pickled
	Make fattr4_size work
	Can now touch/echo/cat a file, and have it persist correctly through
	     server reboot.
	Fill out EXCHANGE_ID and its tests.
	Fix TODO's in CREATE_SESSION tests.
	Update OPEN tests
2007-05-21: Sketch out ConfigFS
2007-05-22: Update FSObject.readdir()
	Fill out ConfigFS
2007-05-23: Use metaclass in config.py
2007-05-24: Stabilize ConfigFS
	Add cookie handling to op_readdir() to handle large directories
	Implement reboot action enabled by ConfigFS
2007-05-25: Add "proof of concept" client tests
	Add op_commit, op_rename, op_link.
	Cthon basic tests now pass.
2007-05-29: Track down stateid bug - client.state[] was getting duplicated keys
	Cthon general tests now pass.
2007-05-30: Track down deadlock bug in RWLock._acquire_write()
	Cthon special tests (except for write/read at 2GB, 4GB edges) now pass.
	    (though write/read 30 MB file takes a *long* time)