Fix truncation of Blob.Size

Aligns Blob.Size return type with GitObjectMetadata.Size.
Introduce NotFoundException

This change is to throw more specific exceptions in several cases when
possible. If an object cannot be found, throw a more specific
NotFoundException.
Introduce CannotDereferenceException

This change is to throw more specific exceptions in several cases when
possible. If an object cannot be peeled into the specific target type, throw
a more specific CannotDereferenceException.