Feature: MailChimp integration with the OSF

Purpose
-----------
We mostly email users for administrative reasons (confirm account email, accept an invite to the OSF, recover password, etc.) but not to keep them up to date with new features. MailChimp will allow us to easily manage lists of OSF users and can handle subscribing/unsubscribing as well as provide us with useful metrics. 

Changes
-------------
The `sync_email.py` script will subscribe all registered OSF users to a mailing list on MailChimp. Whenever a user registers with the OSF, they will automatically be added to the mailing list as well. 

Users can change their subscribe/unsubscribe status through their user settings page: 
![screen shot 2014-11-25 at 11 34 10 am](https://cloud.githubusercontent.com/assets/6414394/5186921/7891a2d4-7497-11e4-90f1-c47b119b1f50.png)

And if a user unsubscribes through one of our emails, that change is reflected on their settings page. 
To avoid having to mock every test that uses the mailchimp client, I'm considering whether it might be better to pass a `client` object to `get_list_id_from_name`, etc. You could even make it a required parameter to prevent devs from forgetting to provide a mock client in tests. So the signature of the mailchimp helper funcs would become:

```
def get_list_id_from_name(list_name, client):
    # ..
```
And in tests you'd do:

```
mock_client = mock.Mock(spec=mailchimp.Mailchimp)
# ...
list_id = get_list_id_from_name(list_name, mock_client)
```

This is the technique that some of the newer addons use, so this would also lead to better internal consistency.