James Cameron says Leonardo DiCaprio almost lost ‘Titanic’ role over his ‘negative’ attitude