Skip building diff patch while doing stage/reset
Add optional encoding to Touch()
Introduce Blob.ContentAsText()
Support BOM detection in Blob.GetContentAsText()

Fixes #475
Marked non-extensible classes as sealed
Update CheckoutPaths method to handle null or empty paths parameter

Fixes an issue where passing an empty enumeration to CheckoutPaths results in the entire commit being checked out - which is not how I expect the method to operate. Instead, this method will now ensure that the path parameter is not null and if the path parameter is an empty list the method will return without checking out any paths.