Lando Norris has won the Singapore Grand Prix in dominant fashion but his McLaren teammate Oscar Piastri had to settle for third behind Max Verstappen.