Manchester City sign Brazil winger Savinho from French side Troyes until 2029 in a deal worth 40m euros (£30.8m).