Allow ZenDesk ticket search by keyword to csv file

Change-Id: I1581e07f2575410a53d70d590b8fba5bf05c2eb3
Throw an error if JSON is bad.

It's easy to mess up the JSON format, so throw an error early if it is
bad.

Change-Id: I9b15968274fb9fb8a44908fe38e0d4d732dd42e5
Just pass utm_campaign to direct_mail_appeal

Anne Gomez requested that it be easier to setup campaigns for email
appeals. The current system you had to modify wmf_civicrm.module to add
a new entry to the switch statement for utm_campaign. Now it will just
pass utm_campaign to direct_mail_appeal which corresponds to an option
value for the custom field 'Direct Mail Appeal'. So you need to create
that option value with a name that exactly matches the utm_campaign
field that will get recorded with the original donation.

Change-Id: Idade44b6e022d6c907df30af905bda5d387c6390
Merge "Allow ZenDesk ticket search by keyword to csv file"
Merge remote-tracking branch 'origin/master' into HEAD