Andrea Dovizioso took his fourth win of the season at Silverstone, narrowly beating Maverick Viñales and Valentino Rossi