Remove almost all shell-interpolation from build commands

I went ahead and replaced almost every shell-interpolated string build command with an equivalent list. I've only tested a few of them, so definitely don't release this without extensive testing.

In cases where a command requires shell functionality such as input redirection, I have changed it into ab list of `("sh" "-c" cmd)`, which acts as an explicit dependency on "sh", rather than implicitly assuming the the shell is sh.

I also replaced a few calls to external programs with calls to emacs in batch mode, since emacs is guaranteed to be available anywhere.