OxygenBasic feature patch: Nr. 14 slice
=======================================

Implemented feature
-------------------

This patch implements the **debug map / line-table output** slice from Nr. 14, with a deeper second-pass upgrade over the first draft.

What was improved significantly
-------------------------------

Core compiler / DLL API
- `o2_debug(<0|1>)` enables or disables debug-map collection and clears stale state.
- `o2_debugmap()` returns the generated debug map text.
- `o2_stats()` now reports debug file-record and procedure-record counts in addition to line and symbol counts.

Linker instrumentation
- tracks **line ranges** instead of single point markers:
  - `start_rva`
  - `end_rva`
  - `size`
  - `file_id`
  - `line`
- tracks a **file table** with stable numeric file ids.
- normalizes embedded file markers by stripping wrapper quotes.
- tracks **symbol records** with a kind field:
  - `proc`
  - `label`
- detects **procedure entry labels** from the compiler’s existing `proclist`.
- emits **procedure ranges**:
  - `start_rva`
  - `end_rva`
  - `size`
  - `file_id`
  - `line`
  - `name`
- still filters synthetic numeric line labels out of the symbol table.

Debug map format
----------------

Version:
- `OxygenBasic Debug Map v2`

Header fields:
- `output`
- `format`
- `bits`
- `image bytes`
- `file bytes`
- `default file`
- `file records`
- `line records`
- `symbol records`
- `procedure records`

Sections:
- `[files]`
  - `id<TAB>path`
- `[lines]`
  - `start_rva<TAB>end_rva<TAB>size<TAB>file_id<TAB>line`
- `[symbols]`
  - `rva<TAB>file_id<TAB>line<TAB>kind<TAB>name`
- `[procedures]`
  - `start_rva<TAB>end_rva<TAB>size<TAB>file_id<TAB>line<TAB>name`

Command-line compilers
----------------------

All four compiler front ends now support `-g` consistently:
- `tools/co2.o2bas`
- `tools/co2m64.o2bas`
- `inc/self/co2m64.o2bas`
- `inc/self/co2m641.o2bas`

Generated files:
- `program.exe.dbgmap.txt`
- `library.dll.dbgmap.txt`
- `program.jit.dbgmap.txt`

Notes
-----

- The recorded addresses are the linked image offsets used by the Oxygen image builder.
- A line range is emitted only when a source line actually contributes bytes.
- The default file id `0` is reserved for synthetic wrapper code or link-only output.
- This is stronger groundwork for later debugger stepping support than the initial point-only map.

Suggested usage
---------------

- `co2 -g Demo.o2bas Demo.exe`
- `co2m64 -g Demo.o2bas Demo64.exe`

API usage
---------

```basic
o2_mode 9
o2_debug 1
o2_basic source$
print o2_debugmap()
```
