Altria buys 45% stake in cannabis producer Cronos for $2.4 billion