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. 

#### 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! 
I started making some changes where instead of calling `mobilecommons.optin`, I'd call `sendSMS()` instead. It's less verbose and I think less confusing than having to use alphaPhone and alphaOptin in all these places. What do you think about changing these new optins to use sendSMS() instead?