Backend/util/diff Optimization

I've simplified the mDiff function by adding an 'addContext' and 'minValue' function literal to replace/optimize the existing code, as well as reprogrammed the innerContext function literal with for loops instead of recursion since Go does not optimize for recursion. To reduce the amount of looping that is required, I added a check to see if the number of loops to be performed is even and cut down the number of required loops in half if true. The code passes the backend tests and I've run the fmt fixer before uploading.
100000000 is a large synthetic number compared to our actual loop count of `3` though. `((669,966032-312,757938)/100000000)*3 ~= 0,00001` ms.

[Still waiting](https://github.com/limetext/lime/pull/436#issuecomment-62800691) for a benchmark that is relevant here.