Add diff engine and diff merger (Based on @luqui merge3)
Fix typo
Docblock fix and some extra functions for the merger
Add class to merge two branches