langWhitelist feature + fixing cookie issue

Some notes:
* Changed cookie behavior: Don't set cookies until after `toLanguages` has a chance to clean up the list (don't set cookie for invalid language)
* **Tests should not rely on a global object that persists across tests.**  Setting `langWhitelist` in one `describe` block should not cause tests to break in the next block.  I discovered this by changing the `i18next` config in some tests -- it broke many subsequent tests 'til I added an `afterEach` block.