feat(lib): Finalize async Experiment ABC — define interface contract and document public API

Goal

Finalize the asynchronous Abstract Base Class (ABC) for Experiment in plesty-lib. Experiments orchestrate one or more Devices to execute a measurement routine.

Requirements

  • Define the public API: setup(), run(), teardown(), and data output contract
  • Must compose cleanly with the Device ABC — an Experiment receives Device instances, not raw hardware
  • All async-capable methods must be async
  • Full type annotations and Mypy compliance
  • Docstrings and a minimal runnable example in the module docs

Definition of Done

  • ABC is merged and published
  • The demo experiment in hub/experiments/demo successfully subclasses it
  • plesty check passes on plesty-lib