Thread safety

This is a work in progress on making objective-git's wrapper classes thread safe.

There are still two pieces that stick out like a sore thumb: `GTReference` and `GTBranch`. The problem is that the underlying ref for both can change.

I see two options:

1. Synchronize all the things.
2. Make them immutable.

Opinions?