[MJ-88] ability to replace primary login email with secondary email

Changes in this pull request:
- Extends the registration app to support secondary emails. Creating a SecondaryEmail object creates a corresponding ActivationProfile. This involved some changes to the ActivationProfile model. 
- You must manually trigger an activation email and setting a secondary email as primary with the send_activation and set_as_primary method in the SecondaryEmail model respectively. (Haven't done any UI work for this since I wasn't sure how this fits in to the modular profile stuff but it should be simple enough just to call these methods from the views)
- Upgraded South to 0.7.6 to resolve issues with SQLite and other weird stuff.
- Started using signals to allow easier decoupling of our different apps
- Started using factory boy for easier mock data generation for tests

All tests pass.