Largeish refactoring.

Splitting things out to angular factories. Look at participants and streams, specifically.

Roughly feature parity with previous commit.

Experiencing some concurrency issues, specifically when changing rooms and possibly ongoing Promises being resolved.