Create dark theme by extracting theme settings from glowingbear.css

* Remove style.css as those values should be themable as well.
* Update urls in index.html to link to dark theme by default
Provide a way to change the theme in the settings

* Selected theme is dynamically loaded
* Preferred theme is stored in the settings.
* Default theme = dark
Add light theme
light-theme: darken most colors by 50% and add it to theme manager
embedded content: check if scrollIntoViewIfNeeded vendor method is available
Correct setId placement

The setId had been implemented once on the protocol instance and once
as a (unused) static method.
Make it easier to switch protocols

This commit introduces a new module to switch the protocol. It will
look at a protocol=xxx query parameter (like the debug mode) to do so
show active protocol name on the front page banner
make the websocket mountpoint protocol dependent
add handling for protocols that support skipLines in line retrieval
ignore empty messages received on websockets, which may be used as pings
Implement challengeauth login mechanism

Some protocols only support login via challengeauth and not via
PLAIN. This adds support for this mechanism.
Add ID to lines

To support protocols with line removal, remember line IDs.
Refactor Buffer into separate Buffer and Textbuffer objects

Some protocols require merged textbuffers that are shared by multiple
buffers and cannot be separated (similar to WeeChat's "merged buffers"
feature, but in WeeChat, the textbuffers are still separable).

This commit introduces support by splitting the textbuffer off into
its own class. This adds a small layer of indirection for some
operations.
visually show non-selected buffers that share a textbuffer
add support for removing lines in the textbuffer
Add support for buffer items navigation

For protocols where one textbuffer is shared by multiple buffers, add
a mini buffer navigation above the input line.
Add support for buffer activate messages

Supporting protocols can use this message to tell the client, that a
buffer was activated because of the command that the user issued.

The buffer is then also activated in glowing-bear.
Buffer Item Active server message

Support buffer item active message to change the currently active item buffer for the protocols where multiple buffers use a single textbuffer.

This signal gets sent when anyone (in the real client or a relay
client with "Mark as Read" enabled) changes the buffer, as it
corresponds with informational messages in the textbuffer, such as
"Now talking to: xxx"
skip non-existant buffers when handling nicklist message, they may already have been closed