DOG-007: split dog/ out of beagle into a libdog submodule (the libabc pattern)

The beagle tree grew too big; today it splits into subprojects. abc/ already lives as the libabc submodule; dog/ is next. dog/CMakeLists.txt already declares project(libdog C), and the dog target links only abc-core + ZLIB, so the layer is submodule-shaped as-is. Every consumer (bro, spot, sniff, keeper, graf, beagle, woof, mark, js) links dog abc-core and includes "dog/..." via the beagle-root include path, so mounting the new submodule at the same dog path means ZERO consumer churn. Sibling ticket: JAB-005 (jabc split) depends on this one. Method: Issues.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome