misc/emacs: Rewrite gofmt to use own function for applying patch instead of using diff-mode.
Instead of relying on gofmt's diff output (which is a unified
diff), we manually invoke diff -n and produce an RCS format diff,
which can easily be parsed in Emacs, with the go--apply-rcs-patch
function.
This fixes undocumented issues with the old implementation such as
skipping over hunks of changes, and it fixes the documented issue
of not being able to handle file names that include whitespace.
It can also apply the patch on a buffer that has no file name
attached at all.
Last but not least, it greatly simplifies the gofmt function
itself.
Fixes #4766.
Fixes #4475.
R=adonovan, cw, patrick.allen.higgins, sameer
CC=golang-dev
https://golang.org/cl/
7516046