* Adds functions to handle checking out branches and moving files
Adds support for checking out a new branch
Fix for branch pull requests
* Adds methods to get files changes between two commits
This fixes regression introduced in ebd9fb2253,
that GetSubModules was always returning empty submodule info because
c.submoduleCache != nil check was always true since parseCommitData was setting
commit.submoduleCache = newObjectCache() so it was always not-nil.
Now we initialize submoduleCache in first GetSubModules call, next call will
return cached entries.