auto-mark old messages as read when joining comm thread (bug 931223), refactor comm tests/utils, work on comm emails

This patch is for "Commbadge", the communication dashboard between developers and reviewers to reduce friction in the app review process. Consists of threads and notes like a forum. This pull request features a lot of refactoring and adding tests. 

Sorry for the big patch, but they kinda build on each other since I rework the code in the first patch.

**Auto-marking old messages:**

- when someone is CC'ed on a thread, mark all existing messages as "read" (```CommunicationNoteRead```)
- when someone posts a note, mark their own note as read
- applies to both reviewer actions and api actions

**Refactor comm utils:**

- in ```create_comm_note``` have actual args instead of ```**kwargs```, document args
- have default permissions (notes default visible to devs, reviewers, and mozilla contacts)

**Refactor comm tests:**

- add more tests (especially to comm utils)
- use foreign key names (e.g. ```app.threads```) rather than retrieving objects through models (e.g. ```Thread.objects.get(addon=app)```)
- note/thread factory

**Remove action visibility checkboxes from reviewer tools**

- previously reviewers could exclude senior reviewer from conversations
- simplifies the UX by having fixed permissions for different types of reviewer actions (developers can't see escalations/reviewer comments)

**Work on and refactor communication dashboard emails**

- change the way email recipients are chosen, rather than emailing to anyone who has permission, email only to relevant people (e.g. developer, reviewers who have posted to the thread)
- in ```reviewer/utils.py```, use communication dashboard email utility to send emails if ```comm-dashboard``` switch is on
- tests to comm emails + comments to reviewer utils