### Rationale for this change
`pq.read_table` has no way to pass a memory pool. `ParquetReader` and `Dataset.to_table` already accept one, it just wasn't added.
### What changes are included in this PR?
I added a `memory_pool` argument to `read_table`, `ParquetFile` and `ParquetDataset`. It is passed to `ParquetReader` and to `Dataset.to_table`, with docstrings updated.
### Are these changes tested?
Yes. I added new tests in `test_basic.py` - It reads a Parquet file with a tracked memory pool and check that the pool was actually used. They cover `read_table`, `ParquetFile` and `ParquetDataset`.
### Are there any user-facing changes?
New optional `memory_pool` keyword. No breaking changes.
### Was AI used for this PR?
**PR code and description written by:**
- [x] Human
- [x] AI
**Reviewed before submission by:**
- [x] Human
- [ ] AI
Github Issue - https://github.com/apache/arrow/issues/54637
* GitHub Issue: #54637
Authored-by: Omkar Kabde <omkarkabde@gmail.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>