Use Sphinx docstrings and modern type annotations in braille.input (#20597)
Summary of the issue:
#20509 moved braille input handling into the braille.input package as a verbatim move.
Documentation and annotation modernization was deliberately left out to keep the move diff reviewable.
The package therefore still uses epytext markup (L{}, @param, @type), #: attribute comments and Optional[X] annotations.
Description of user facing changes:
None.
Description of developer facing changes:
Docstrings in braille.input now render correctly in the developer documentation and in IDEs.
Description of development approach:
Restored the documentation polish that was deferred from Move brailleInput into the braille.input package and deprecate the old module #20509.
Converted epytext markup to Sphinx style: :class:, :attr:, :meth:, :param: and :return:.
Converted #: attribute comments to real docstrings below the attributes.
Replaced Optional[X] with X | None and added from __future__ import annotations where needed.
Added type annotations to class attributes such as BrailleInputGesture.dots and space.
ran ruff check --extend-select I,U to perform further modernization (particularly regarding old style formatting) and sorting of imports.