Add DiffLauncher class to repo

DiffLauncher class is intended to be used to launch the default
diff tool when two files are provided.
Refactor FunctionDiff class

Made FunctionDiff a static class. Refactored usage and tidied some
areas involving this code.