static: Show the requisite that's missing to run Cockpit

When declaring the browser too old to run Cockpit, show the
thing that's missing as a clue. It turns out some browsers
don't even have console.log() or fail to send it somewhere
useful.

Related to #1408
Closes #1419
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
base: Add test-framed.html to 'make check'

These tests were implemented before but never didn't make it into
the automated testing.

Closes #1423
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
websocket: The protocol can be chosen until halfway through handshake

Allow choosing the protocol as late as possible. It could depend on
other factors such as the flavor of WebSocket standard being spoken.

Closes #1424
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
websocket: The WebSocketConnection flavor property is readable

Closes #1425
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
common: Expose name of CockpitPipe via accessor method

Closes #1426
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
bridge: Move UTF8 validation to CockpitChannel

This allows multiple channels to take advantage of this. For
channels that are sure they're producing valid UTF8, there's a
flag so we don't have to recheck everything.

Closes #1428
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>