Changes type client keys

Client keys were stored in a QByteArray but it became apparent it would
be easier and more inuitive to instead store them as QStrings.  Most
changes were in ClientIdInterface.  A small change however was
necessary in RemoteMouseServerThread which just converts the key to a
QByteArray.
Adds more info the README.md

README.md was shamefully bare, and honestly isn't a whole lot better at
this juncture, but at the very least provides a little info on the
direction of development at this point.  Once application is in a more
usable state, README.md will be made more explicit.
Fleshes out ClientIdKeyDialog

Makes ClientIdKeyDialog almost usable.  In order to track changes, a
queue is used.  In this way, if the user cancels the changes, no
undoing is necessary, changes are simply disregarded.  Otherwise, the
changes queue cycles through the changes and sequentially applies them.

Preliminary testing reveals there are some severe bugs which prevent it
from operating correctly.  My intuition, however, tells me they should
be relatively easy to fix.
QTextStream issues

Apparently QTextStream requires a device to operate on.  Instead a
simple QString is used.  This could potentially be an issue if the
number of client ids were to grow very large as the entire file is
loaded into memory.  However, the number of client ids would need to be
extremely large and is likely outside the bounds of expected number
clients.

There is also apparently an issue in generating the keys.  Instead of
using the entire string of available characters, only the first four
are used.  Further investigation necessary.
.gitignore change

Change adds an ignore to build directories in the newest version of Qt.