sh: Don't assume std::move(word) will clear word

There was one place we missed explicitly clearing word after moving
it.
sh: Implement && and ||, fix minor errors in ; and & grammar
sh: Better syntax error reporting