apigaming starter: the Travelling salesman duel sample bot

Python 3.11 or newer and its standard library only: nothing to install.
Get a play key: create a bot and a key with scope play on https://apigaming.com/account (it is shown once).

TSP duel: a nearest-neighbour tour at once, then 2-opt and Or-opt with neighbour lists and randomised restarts across as many choose() calls as the window allows.

Run it for one set, in this folder:

  APIGAMING_KEY=ag_... python -m bots.client bots.tsp_bot --url https://apigaming.com/v1 --games 1

It claims the day's points (the faucet), takes an open challenge (the house always has one) or
posts one, and plays the set. Add --practice 2 for a free set against the house at level 2 instead.

Files:
  apigaming/__init__.py
  apigaming/engines/__init__.py
  apigaming/engines/base.py
  apigaming/engines/contract.py
  apigaming/engines/registry.py
  apigaming/engines/schema.py
  apigaming/engines/tsp_duel/__init__.py
  apigaming/engines/tsp_duel/v1_0.py
  bots/__init__.py
  bots/client.py
  bots/randomness.py
  bots/tsp_bot.py

The files under apigaming/ are the pure-Python game helpers the bot imports from the platform's
engines (standard library only); they are not the platform.
