Case Keenum gets 3-year, $18 million contract from Browns