Merge pull request #7 from dopeghoti/master

Add card implementations.  Tweaks from me coming.
card: Adjust whitespace.

Trivial.
hand: Stylistic tweaks.

Shortened too-long comment lines, removed spaces near parens, came
up with a nicer way to pull a card via index that didn't involve
ranges and multiplication, got rid of internal library imports.
playingcard: Stylistic tweaks.

Change too-long lines, be a bit more efficient in a couple of places,
axe per-deck instances of suits and ranks, move the static functions
out to library functions.
playingcard -> playing_card.

For style reasons, I like lowercase, with underscores replacing the
CamelCase traditionally used for classes.
capturego.py -> capture_go.py.

If I'm going to force others to be consistent, be consistent myself.
rps.py -> rock_paper_scissors.py.

See previous commits.  In-game it's still called "rps," because no
one needs to type all that, but out of the game it should be named
right.
card/hand/playing_card: Add license info.

These are under the AGPLv3+ just like the rest of the code.
Major new feature: Satisfy the AGPL, config.

There is now a mandatory configuration files, giles.conf.  The only
option you absolutely MUST set is source_url, which should be a link
to a copy/repository/whatever of your custom Giles version.  This
satisfies the requirements of the AGPL.  You can also configure the
name of the server, which is nice, but you don't have to.

.gitignore is updated to ignore giles.conf for obvious reasons.
crossway: Fix off-by-one in row display.

I forgot the modifier.
Ataxx: Flip yellow and green starting locations.

Stella pointed out that the original was unfair; both of Yellow's
neighbours went immediately before them, so a pincer attack would
unduly penalize them.  This simply flips the position of the
bottom two pieces so that turn order goes around the board.
Major reorganization: Games in directories.

Each game has its own directory now.  The root giles/games directory is now
only for classes meant to be used by more than one game--things like seats,
cards, and the base game class definition.
utils: New utility function, name_is_valid().

Meant for use by names, tables, and channels.  One method to keep
it all consistent, and the new "can't start with a digit" rule is
a leadup into supporting aliasing.
player: Convert set_name() to use name_is_valid().

Easy switchover.
game_master: convert to name_is_valid().

The diff is big because this let me lose a level of indentation, which
is a good thing.
channel_manager: Convert to name_is_valid().

I noticed while doing this change that the feedback for failing to
create a channel is nonexistent; I'll fix that next, but I didn't
want to conflate the changes.
chat: Give error when connection to channel fails.

This is just a generic message, but it's better than nothing.
player: Add alias dicts to the config dict.

This is preparatory work for supporting aliases for channels, players, and
tables.
Most games: Stop doing strip().split().

For whatever reason I had forgotten that split() automagically does
what strip() does as well, only better.
chat: Aliasing part 1: the command.

You can now add up to 100 aliases (0-99) for channels, players, or
tables.  They don't /do/ anything yet, but you can add them.