Add weed/parquet_pushdown/footer/parser.go: a thin wrapper around
parquet-go's OpenFile that returns the cache-friendly subset M1
needs — per-row-group, per-column-chunk byte ranges plus row counts
and dotted column paths.
Notes:
- SkipPageIndex(true) and SkipBloomFilters(true) are passed because
M1 only does file/range-level pushdown; ColumnIndex/OffsetIndex
consumption is M6 work and skipping them avoids the extra
thrift-decode pass per parse.
- columnChunkBytes prefers DictionaryPageOffset when present so the
byte range covers both the dictionary page and the data pages of
the column chunk, per the design's Page-Level Index rule about
dictionary pages.
Tests cover row count, column count, column paths, byte-range
sanity, and bad-input rejection.