Closes #8 - Made garbage collection iterator determine oldest active snapshot.  

Pull request for #8 

Created TimestampTracker to keep track of timestamps in Zookeeper.  Modified GC iterator to get oldest active timstamp from Zookeeper. Created integration tests for TimestampTracker and GCIterator
thinking about this some more, its possible that the zknode could be deleted (and state is set to IDLE) while lock was not held.  That can be detected here, but then what? retry?  An alternative to retrying would be to increment an allocating counter in the first block and decrement it in the second sync block.   Code that deletes node would not do so if allocating counter > 0.  Another alternative would be to use a read-write lock.