Improve marshaling of git oid

Doing a simple copy of the byte array is a lot faster than using
Marshal.PtrToStructure.
Introduce Remote.IsValidName(string)

Deprecate RemoteCollection.IsValidName(string).

Update test CanTellIfARemoteNameIsValid(string, bool).

Fixes #679
Added libgit2 features to Repository.Version

Introduced NativeMethods.Capabilities .

Added CanCreateValidVersionString() test .

Displaced NativeMethods CompiledFeatures to Proxy

Remove irrelevant region on Proxy

Make Proxy.get_compiled_features match get_libgit2_features .

Add mising [Flags] tag on GitBuiltInFeatures .

Remote trailling whitespace in Proxy

Resolves #676
Introduced Reference.IsValidName(string)

Deprecated ReferenceCollection.IsValidName(string) .

Updated Test .

Fixes #680

Fixed typo in [Obsolete] tag.

Rebase into current vNext.
Cleanup whitespaces
Fix Commit() so that it always updates the HEAD

Fix #692
Make Travis build target osx platform
Favor usage of non obsolete methods
Subtransport logic.