ui: Fix new chat window opens only to the right #85

On Windows a new chat window got opened always right to the main
windows even if this position was off screen.

To have a consistent behaviour on both single and multi screen systems a
list of all available screens is generated. This list is used to
calculate the relative position of the chat window on the screen where
the main window is located. If the position is off screen the
chat window opens left from the main window.

Also if the main window is moved below the bottom of the screen any
new chat window will be opened above the screen bottom. Note: this could
be problematically on systems with vertically stacked screens.
ui: Fix new chat window opens only to the right #85

On Windows a new chat window always got opened right to the main window
even if this position was off the screen.

Every time the user opens a new chat window the following is happening:

 - a dictionary (name -> geometry) of all screens is generated

 - the screen name of the screen on which the main window is located is
   being fetched

 - a decision based on screen geometry is made to determine where to
   open the new window
Removed need of global variable currentScreenName
Merge pull request #111 from jan0e/fix-chatwindow-pos

ui: Fix new chat window opens only to the right

Closes #85
ui: Chat window doesn't always flash (Win) #114

On Windows a chat window in the background sometimes doesn't notify the
user about new messages. It seems, that this is caused by the alert
of an already active window. Thus checking if the window hasn't already
active focus prevents above mentioned behavior.
Merge pull request #117 from jan0e/fix-win-notify

ui: Chat window doesn't always flash

Closes #114
Add BUG() message function
Add protobuf compilation support to build

This adds dependencies on libprotobuf, protoc, and a C++11 compiler.
Add ControlChannel.proto
Skeleton implementation of Protocol::Channel
Skeleton implementation of ControlChannel
Add Connection implementation for new protocol
Add Connection::channelOpened signal
Add connection logic to Channel and ControlChannel
Add purpose property to Connection
Timeout connections with unknown purpose after 15 seconds
Switch to an even-odd scheme for channel ids
Add Channel::openChannel method
Add Connection::channelCreated signal
Make Connection destruction cleaner and safer

Carefully destroy all channels when destroying the connection, to ensure
nothing accesses the deleted Connection instance.