Open.popen3 does not set `$?`

This is possibly the cause of numerous glitches such as
random failures on Travis.  Back in #2624, when we switched
to `Open3.popen3`, we should not have continued to depend on
global `$?` for the exit status.  `popen3` does not set `$?`, so
success or failure of the **current** external command was
determined by the exit status of some **previous** command.

Instead, we should use the fourth parameter from `popen3` to get
the exit status.

Closes caskroom/homebrew-fonts#186