Add a bunch of fine-grained access control to games and logging in.

This is the start of a more flexible authentication scheme. As of this commit,
none of the added control is actually utilized.
Rewrite lots of...stuff.

If it's not obvious from the changeset, this is almost a rewrite of Dfterm3. As
of this commit, the software is broken but compiles. The only reason I make
this commit is that I need at least some git history and not just commit a huge
one commit at the end.

I will add bits of old code back to this repository as I make things work
again.

The previous model to work with games was not very flexible. It was difficult
to extend and in particular, GitHub issue #4 would be difficult to properly
fix.
Implement registering and unregistering games to the administrator interface.

As of this commit, we are almost at feature parity with the old administrator
interface (which looks almost exactly the same).
Implement adding games manually in the administrator panel.

Fixes one of the issues listed on the forums. (Cannot manually add games).
Add the web interface back.

Somewhat works but chat seems to be broken in this commit. Launching Dwarf
Fortresses does not seem to work at all from the web interface.
Make Dwarf Fortress launching work properly.

Or at least I hope it is properly working now. On Linux I can launch Dwarf
Fortresses and they actually work (with some CPU hogging by Dfhack console that
does not like the terminal it is running in). Hopefully no more duplicate Dwarf
Fortresses.
Fix compilation and hlint warnings.
Show when a player joins or leaves a game in the web interface.
Fix web interface not showing who last played the game.

Now the name is stored more persistently so whenever you join a game, you will
always see who played the game last time (if there was someone).
Fix not being able to join to Dwarf Fortresses that were "captured".

"captured" as in not launched by Dfterm3; something the user started themselves
and wrote 'start-dfterm3' to the Dfhack console.
Fix small hlint warning.
Keep track of who is in a game and send the information to web interface.

This is enough to implement player listing in the web interface. However, the
web interface implementation is not there yet. Maybe in the next commit?
Implement player listing in the web interface.

It is not exactly beautiful but you can at least see who is watching. I have a
feeling the whole web interface should be rewritten to be more beautiful at
some point.