note: rename the id getter to git_note_id()

This was left over when we did the general switch.
Initial take on builtin drivers with multiline

This extends the diff driver parser to support multiline driver
definitions along with ! prefixing for negated matches.  This
brings the driver function pattern parsing in line with core Git.

This also adds an internal table of driver definitions and a
fallback code path that will look in that table for diff drivers
that are set with attributes without having a definition in the
config file.  Right now, I just populated the table with a kind
of simple HTML definition that is similar to the core Git def.
Import git drivers and test HTML driver

Reorganize the builtin driver table slightly so that core Git
builtin definitions can be imported verbatim.  Then take a few of
the core Git drivers and pull them in.

This also creates a test of diffs with the builtin HTML driver
which led to some small error handling fixes in the driver
selection logic.
Fix filemode updating in diff text
Implement matched pattern extract for fn headers
Update all tests for new pattern extraction
Got some permission to use userdiff patterns

I contacted a number of Git authors and lined up their permission
to relicense their work for use in libgit2 and copied over their
code for diff driver xfuncname patterns.  At this point, the code
I've copied is taken verbatim from core Git although Thomas Rast
warned me that the C++ patterns, at least, really need an update.
I've left off patterns where I don't feel like I have permission
at this point until I hear from more authors.
Permission for Git code from a couple more

This brings over the Pascal and CSharp userdiff data.
Move userdiff tests to be data driven

This moves the expected and actual test data along with the source
data for the userdiff tests into the tests/resources/userdiff test
repo and updates the test to use that.
Add PHP and Javascript diff drivers

Since I don't have permission yet on the code from Git, I decided
I'd take a stab at writing patterns for PHP and Javascript myself.
I think these are pretty weak, but probably better than the
default behavior without them.
index: rename an entry's id to 'id'

This was not converted when we converted the rest, so do it now.
commit: remvoe legacy 'oid' naming
tree: remove legacy 'oid' naming

Rename git_tree_entry_byoid() to _byid() as per the convention.
diff: rename the file's 'oid' to 'id'

In the same vein as the previous commits in this series.
diff: change id abbrev option's name to id_abbrev

Same as the other commits in the series, we use 'id' when talking about
thing rather than the datatype.
merge: rename _oid() -> id()

Following the rest of the series, use 'id' when refering to the value.
repository: move to use a git_buf for outputting strings

Since we now export that type, we can avoid making the user guess a
size.
branch: move to git_buf when outputting newly-allocated strings

Internally we already did everything with git_bufs, so this is just
exposing those functions with public names.
config: use git_buf for returning paths

Again, we already did this internally, so simply remove the conversions.
messsage: use git_buf in prettify()

A lot of the tests were checking for overflow, which we don't have
anymore, so we can remove them.