First baseman Brandon Belt agrees to $2.9M, 1-year contract with Giants to avoid arbitration