Mets sign James McCann to four-year deal worth more than $40 million