Add `exclude_/include_function` support

This is first step towards fixing #1046.
Use class setup/teardown methods to use vim module mock
Use new functionality to replace tabbuflister and single_tab segment
Filter None values when computing subsegments for segment listers
Filter subsegments for segment lister prior to using lister
Assume highlight group is always an iterable

According to the documentation and linter `'highlight_group': 'string'` was not
correct even at the current stage, but it worked. This commit fixes this
situation.
Do not require using `priority_multiplier` key
Replace segment-local modes with highlight_group_prefix option

Fixes #1046
Skip identical highlighting

Fixes #1049
Add a way to profile Vim bindings
Use less precise algorythm for width computations under stress

Makes #1047 far less bad
Remove `{module}.{function}` default highlighting group

It is both not documented and not supported by linter in any case.
Show current buffer, window and tabpage number by default

Fixes #1048