Integrate OSF with Mailchimp

Add script to subscribe all registered
osf users to the general OSF mailing
list on mailchimp. Also add new users
to the list when they have registered and
confirmed their email address.
Add tests for OSF MailChimp functions

Test get_list_id_from_name() and subscribe()
functions. Also add tests for sync_email
script.
Add mailchimp to requirements.txt
Fix failing tests
Refactor mailchimp code into separate settings page

- Add notifications page under user settings and
  link in settings navigation side bar
- Add separate GET and POST routes to update
  subscribe info on the user
- Change user field to a dict ('mailing_lists')
  to support multiple lists.
  Format: {'list_name': True/False}
- Add unsubscribe helper to framework/auth/utils.py
Handle errors when user is already subscribed/unsubscribed
Change webhook url to api endpoint

- Add secret key as a parameter to
verify that mailchimp is posting
data to the url.
- Add GET endpoint for mailchimp
to hit (previously mailchimp did
not recognize the url given for
the webhook because it would return
a 404)
Test added view functions and mailchimp utils

Includes:
- mailchimp unsubscribe util
- mailchimp get list id from name util
- webhook routes
- route for updating lists on the user
Merge branch 'develop' of https://github.com/CenterForOpenScience/osf.io into feature/mailchimp

Conflicts:
	framework/auth/views.py
Change `import celery` to `import app`
Merge branch 'develop' of https://github.com/CenterForOpenScience/osf.io into feature/mailchimp

Conflicts:
	requirements.txt
Use settings.MAILCHIMP_WEBHOOK_SECRET_KEY in webhook test
Throw RuntimeError if MAILCHIMP_API_KEY is None
Set update_existing to True to prevent ListAlreadySubscribed error
Add error handling and fix view function responses

- Make mailchimp_get_endpoint return an empty response
  with a 200 status code
- Have user_choose_mailing_lists return mailing lists
  a user is subscribed to and throw a 400 error if
  json_data is None
- In sync_data_from_mailchimp, raise error if user
  does not exist
Remove /static/public/js/dataverse/files.js

Files in /static/public should not be versioned
Remove remaining files in website/static/public/js
Update sync_email script

- Use logging
- Add update_existing=True parameter to
  lists.batch_subscribe
- Fix test_subscribe_users_called_with_correct_args
Use (un)subscribe.delay when USE_CELERY is True
Create knockout view model for user settings email page