Erling Haaland has signed a new nine-and-a-half-year contract at Manchester City, the club have announced.