3 m endgame flow fix

#### What's this PR do?
This PR does a couple things:
1. It adds invalid state and zip code opt in paths to the game config file, 
2. It adds a new 'donation_complete' flag to the DonationInfo model, which allows a user to donate to different projects with multiple donation transactions. Previously, because we were querying Mongo using a user's phone number, if a user was donating again after her first time, the donation transaction might just donate to a previous project/proposal. 

Now, when we query Mongo before the transaction is made, we're looking for a project in our database that is identified with that user's phone number, and also has the flag 'donation-complete' flipped to **false**. 

Note that the flag is flipped *before* the donation is processed; this is safe because we will redirect the user to restart the donation flow if anything goes wrong. That is to say, even if the transaction doesn't go through and the flag is flipped, the user will be directed to start the donation flow over again. 

3. It also adds some more error handling in the case async API calls return errors, 

4. and changes the long-winded mobilecommons.optin calls to sendSMS() calls. 

#### Where should the reviewer start?
Start with DonationInfo.js, then check out the controller. 

#### How should this be manually tested?
By making multiple test transactions from the same phone number!