Add a /leave command

This is the other side of /join when bookmark_on_join is set to true.

It lets the user easily leave a bookmarked MUC from all of their clients
at once.
6 jobs for command-leave in 5 minutes and 16 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Lint
failed #28571
allowed to fail
mypyc

00:00:47

failed #28569
allowed to fail
pylint-latest

00:03:47

passed #28570
pylint-plugins

00:02:25

passed #28568
security-check

00:00:49

 
  Test
passed #28572
pytest-3.7

00:00:59

passed #28573
pytest-latest

00:01:28

 
Name Stage Failure
failed
mypyc Lint
poezio/plugin_e2ee.py:329: error: Unexpected keyword argument "passthrough" for "_encrypt" of "E2EEPlugin"
poezio/plugin_e2ee.py:374: error: Item "MucTab" of "Union[MucTab, DynamicConversationTab, StaticConversationTab, PrivateTab]" has no attribute "parent_muc"
poezio/plugin_e2ee.py:374: error: Item "DynamicConversationTab" of "Union[MucTab, DynamicConversationTab, StaticConversationTab, PrivateTab]" has no attribute "parent_muc"
poezio/plugin_e2ee.py:374: error: Item "StaticConversationTab" of "Union[MucTab, DynamicConversationTab, StaticConversationTab, PrivateTab]" has no attribute "parent_muc"
poezio/plugin_e2ee.py:389: note: "_encrypt" of "E2EEPlugin" defined here
poezio/plugin_e2ee.py:499: error: Incompatible return value type (got "Union[str, int, float, bool]", expected "str")
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit code 1
failed
pylint-latest Lint
poezio/tabs/basetabs.py:1027:16: E0602: Undefined variable 'Message' (undefined-variable)
************* Module poezio.core.core
poezio/core/core.py:1078:8: E1102: self.tabs.next is not callable (not-callable)
poezio/core/core.py:1084:8: E1102: self.tabs.prev is not callable (not-callable)
************* Module poezio.core.tabs
poezio/core/tabs.py:297:12: E1102: self.prev is not callable (not-callable)
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit code 1