Sheldon Richardson agrees to three-year contract with Browns