Destroy conversation when all participants leave it

When all participants of a conversation leave it, conversation remains in db.

Due to private issues, when nobody is seeing it, it should be destroyed.

Test is long but I think it accurately ensures expected behavior.
This is an integration test, yet controller specs should be unit tests for the controller. A unit test rarely should have more than one expectation and usually have the form `optional setup; trigger; expectation`, or if testing a side effect `optional setup; expectation; trigger`. This should happen once per test and not repeat in it.

But let's look at dissecting this after resolving above comment ;)