Decode an already-sampled module grid or linear pattern into a Symbol.
This is the structural half of decoding — it operates on clean module data
(Encoding) rather than pixels, and is what round-trip tests exercise against
the encoder. Image sampling lives in Analyze.