Go already has all the necessary pieces for encoding and decoding hex
strings. Using them let's us avoid going into C land.
Benchmarks show this takes about half the time as using libgit2's
functions.
This is the most common way of having an id that's not in Oid form, so
let's make it the "default" and rename to NewOidFromBytes() the one that
takes []byte.
There is no need for a struct with a single field. An Oid is 20 bytes
which hold the binary representation of the hash, so let's use that
directly. Go lets us have methods on this new type just the same.