* [Code] use native git to iterate git files
* [Code] use native git to clone/update repository
* [Code] git history using native git
* [Code] use native git to read file tree and file content
* [Code] fix the 'bad file' warning from status api
* [Code] use native git to handle worktree
* [Code] use native git to resolve references
* [Code] use native git to handle blame / diff
* [Code] patch git binaries in kibana build script
* [Code] migrate unit tests to use native git
* [Code] a MVP implementation to support cluster mode code deployment with manually configured static routing table.
1. add a ClusterNodeAdapter
2. add the abstraction of ClusterService to manage cluster state and support event listening.
3. add the abstraction of ClusterMembershipService to manage the members in the cluster.
4. add the abstraction of ResourceScheduler to allocate resources to nodes, and implement a hash based resource allocation policy.
5. added ResourceSchedulerService to watch the change of cluster states and trigger resource allocations.
6. support request handling based on the routing table.
Fixed jobs filtering in Worker._getPendingJobs().
As Array.filter() doesn't support async callbacks, rewrite with a loop.
* [Code] introduce a RequestFacade interface to decouple hapi.Request
* Add a RequestQueryFacade
* completely remove hapi dependencies from code
* Refactor init.ts to comply with the new platform plugin API
* more refactoring
* fix tests
* fix type errors