Release 2.0.0

Major refactor with breaking changes:
- Split TaskScheduler into SlotRegistry + ChannelRouter (facade
  keeps backward-compatible delegation).
- Structured concurrency: async TaskScheduler.run_ipt /
  TaskAssignator.run (TaskGroup-based) + shutdown().
- TaskLoop.renew decomposed into 8 single-purpose helpers.
- mypy gate (clean) + full TaskLoop.__init__ docstrings.

Breaking:
- TaskScheduler.availabe_slots alias removed (use
  available_slots).
- async_queue in-module demo helpers removed.
- manage_tasks / new_process_task emit DeprecationWarning;
  removal planned for 3.0.

Suite: 50 -> 66, coverage ~94%, verified on Python 3.11 and 3.12.