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.
Sure:

1. The variable `element` isn't changed.
2. Strings are [immutable](http://golang.org/ref/spec#String_types) so while you can change what the *variable* points to, you can't actually change the underlying data (at least not in a safe way). Neither of there are done, nor are they required here though.
3.  Strings are already passed as a [pointer and length](http://golang.org/pkg/reflect/#StringHeader), so you're not saving a data copy as the data isn't passed around anyway.
4. It adds unneeded &'s and *'s to the code making it larger for no reason.
5. It adds an extra layer of deferences and nil pointer checks for no reason.
6. I don't think I've ever seen a `*string` in Go's standard library, and if there is one I'm sure there's a reason for it. Like the *variable* actually being assigned to.