Made the GitClient serializable.

While attempting to refactor the git plugin, I noticed that the lack of remotability of GitClient significantly contributes to the apparent complexity of the code. This change is a step forward for reducing that by allowing GitClient to be passed to a closure.
Improved GitClient factory to support remote GitClient creaetion
Refactoring with be called 1.1
fixed a compilation problem
fixed a typo
Take author/committer separately

This works better than the previous design for several reasons:

- in typical usage (such as GitSCM), the part of the code that configures these things is very different from the parts of the code that make git operations like commit/merge.
- git-commit is not the only only operation where the committer/author settings matter. For example, git-merge creates commits, too.
Fixed compilation problems
for a better control of the git execution, it's better to define a builder-like interface to control options.

This allows us to run a command like "git whatchanged ^rev1 ^rev2 ^rev3 ... revN".

Compared to "rev1...revN" "rev2...revN" "rev3...revN" that the current GitSCM plugin does, this is both more efficient (because it's only one invocation) and more accurate (because A..C && B..C can report the same commit twice: imagine the commit graph A<-B<-C.)
Better to be an abstract class for reuse between impls
Since changelog produces a text, it needs to take Writer.

Otherwise there's no guarantee what encoding the log gets written in.

(this makes me wonder if git says anything about the encoding of the commit message. Is it platform dependent, or is it supposed to be a fixed encoding like UTF-8?)
Don't mask InterruptedException.

Otherwise aborted builds will be marked as failure.
Added a builder-pattern command for the git-clone command
typo
repository can be null
JSR-305 annotations
documenting why this is Writer
flush the stream to avoid dropping bits
Making GitClient really remotable
Made the remote proxy compatible with IGitAPI
Fixed more remoting issues