Fix compilation of websocketprotocol test.

The versionFromString method must be exported for usage in the test.
Additionally, the metatype of the version enum must be declared.

Change-Id: I8e0aef28f9902f274cab43f772667ad5a93c4062
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Do not access QObject API before its private data is initialized.

Inside the ctor of the private data, the QObject has not yet
been associated with the data. Thus, accessing it indirectly i.e.
to setup private signal/slot connections, will trigger crashes.

Now we delay accessing this API and call an init() function manually
in the parent QObject-inheriting class.

Change-Id: I2c3ce7335c54d42af6bce87de867ee0ef197efc6
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Fix assertion when encountering invalid header line.

The server test sets an empty identifier which results in a
headerLine containing "Server: ". The split then yields a list
with a single entry ("Server"). Calling [1] on it asserts then.

QFATAL : tst_QWebSocketServer::tst_connectivity()
 ASSERT failure in QList<T>::operator[]: "index out of range", file
/ssd/milian/projects/compiled/qt5/include/QtCore/qlist.h, line 476

Change-Id: I3e5c4750b304b2a4a5669a39e2d65a6b3e4e99cf
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Do not try to invoke/emit signal on shutdown.

I'm actually not sure whether this is the right way to do this,
but when the object is destroyed, we cannot delay the signal emit.
In that case, we just don't emit it at all. This is the old behavior
minus the warning:

QWARN  : tst_QWebSocketServer::tst_initialisation()
QMetaObject::invokeMethod: No such method QObject::closed()

Change-Id: I0513dd693ef7bfc43621e24361e72e90204fbea3
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Do not double-delete the TCP socket of a QWebSocket.

The socket is put into an owning QScopedPointer. But if its also
put into the QObject parent-child chain, it will get deleted when
the QWebSocket is destroyed. In the dtor of the QWebSocketPrivate
class m_pSocket will thus already be destroyed and thus be a
dangling pointer.

This crashed the QWebSocketServer test reliably for me on exit.

Change-Id: I7f06e933bfed832e66b943542c351cde639c9465
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>