Implement Patch with Etag

 - Add DocumentWriter class for manipulating text documents
 - Add tests accordingly
Merge remote day7 into local day7