Fix for computing blob size without loading entire blob content in memory - Fix #873

Fix for computing blob size without loading entire blob content in memory - Fix #873.

Summary of the fix - 
Added a new public method GetObjectSize in ObjectDatabase class which takes ObjectId as input and returns object size. Underneath this calls git_odb_read_header native method to read the header of the object. The header contains Object Type and size. The size is returned as an int value here.

Detailed summary - 

1- Added a new public method GetObjectSize in ObjectDatabase class which returns the Object size for a given Object Id.

2- Added a new class ObjectHeader, which stores the size and type of an object. This is in agreement with the return values of underlying libgit function git_odb_read_header, which is called underneath to fetch this information from ODB.

3- Added a wrapper around git_odb_read_header method to return an ObjectHeader C# object containing size and type info of the queried git object.

4- Added a unit test GetObjectSizeReturnsCorrectSizeForBlob which creates an empty repo, adds a new blob to it, and then verifies that the value returned by repo.ObjectDatabase.GetObjectSize(blob.Id) is same as blob.Size.

Verified this on my local setup with a repository which has about 50K files on the tip. Seems to work fine.

Thanks @ethomson for suggesting the solution and @jamill  for helping me out on the implementation and testing.
>>You mean CLS compliance? We're not CLS-compliant for many more reasons.

>Should we have it? I can take care of it if we want to have it.

@Therzok Unless Something's wrong (and I'be very happy to benefit from your help in this area as well), we're **[supposed](https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp/Properties/AssemblyInfo.cs#L22)** to be CLS compliant. And The CI servers do not seem to raise any compilation warning.