Oid: make the type directly [20]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.
Oid: make NewOid take a string

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.
Oid: remove Bytes()

This is not needed. We can do id[:] to get a slice.
Oid: use Go's conversion functions

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.
Oid: fix IsZero()

We need to compare against the number zero, not its ASCII value.