Lando Norris maintained his world championship charge with a dominant victory for McLaren at the Singapore Grand Prix.