Extract the inline cursor-walk in handleRegionCmd into file-local
helpers (skipSpaces, rtrimSpaces, takeToken, splitNameJump,
processRegionDefSegment), grouped immediately above the consumer.
Behavior is identical; addresses PR #2540 review feedback on
readability.
Tighten the region def docs: collapse five Note callouts into three
grouped paragraphs (Behavior / Existing regions / Limits), add a
case-sensitivity caveat plus an error example, note the cursor reset
between split commands, and use generic placeholder names.
Add a new command `region bulk` for defining region hierarchies in a single line. This command allows users to create multiple regions in a single message. Updated the documentation to include usage examples and detailed parameter descriptions.
Add a serial-only `stats-extpower` command that returns per-channel
voltage and current readings from the INA3221 external power monitoring
board as JSON. Returns an error message if no supported hardware is
detected.
Changes:
- New stats-extpower CLI command in CommonCLI.cpp
- formatExtPowerStatsReply virtual method added through the callback
chain (CommonCLI.h → MyMesh)
- formatExtPowerStats implementation in EnvironmentSensorManager that
reads INA3221 channels
- CLI documentation update
Tested in v1.13.
These commands don't work anymore:
```
get password
-> ??: password
set password secret
-> unknown config: password secret
```
This does work:
```
password secret
-> password now: secret
```