ARROW-3933: [C++][Parquet] Handle non-nullable struct children when reading Parquet file, better error messages
ARROW-3933: [C++][Parquet] Handle non-nullable struct children when reading Parquet file, better error messages

I'm unfortunately not equipped to write a unit test for this; all of this code will need to be addressed and tested more holistically in the context of ARROW-1644. But this will prevent a class of failures and segfaults as reported in ARROW-3933. Now that file yields:

```
$ python test.py
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    'bbe5-b0bd08699104.snappy.parquet', use_threads=False)
  File "/home/wesm/code/arrow/python/pyarrow/parquet.py", line 1235, in read_table
    use_pandas_metadata=use_pandas_metadata)
  File "/home/wesm/code/arrow/python/pyarrow/parquet.py", line 1104, in read
    use_pandas_metadata=use_pandas_metadata)
  File "/home/wesm/code/arrow/python/pyarrow/parquet.py", line 587, in read
    table = reader.read(**options)
  File "/home/wesm/code/arrow/python/pyarrow/parquet.py", line 246, in read
    use_threads=use_threads)
  File "pyarrow/_parquet.pyx", line 1110, in pyarrow._parquet.ParquetReader.read_all
    check_status(self.reader.get()
  File "pyarrow/error.pxi", line 86, in pyarrow.lib.check_status
    raise ArrowNotImplementedError(message)
pyarrow.lib.ArrowNotImplementedError: Reading lists of structs from Parquet files not yet supported: altAlleles: list<element: struct<ref: string not null, alt: string not null> not null> not null
In ../src/parquet/arrow/reader.cc, line 740, code: child.GetReader(ctx, &child_reader)
In ../src/parquet/arrow/reader.cc, line 175, code: GetFieldReader(i, indices, row_groups, &reader)
In ../src/parquet/arrow/reader.cc, line 823, code: ReadColumnFunc(i)
```

Closes #5314 from wesm/ARROW-3933 and squashes the following commits:

4f636e655 <Wes McKinney> Fix infinite loop
f41b9f145 <Wes McKinney> Handle non-nullable struct children when reading Parquet file

Authored-by: Wes McKinney <3be70eed0275ec2606f002bff3514252e145d204@apache.org>
Signed-off-by: Wes McKinney <3be70eed0275ec2606f002bff3514252e145d204@apache.org>

xhochy/arrow,renesugar/arrow,cpcloud/arrow,renesugar/arrow,wesm/arrow,renesugar/arrow,laurentgo/arrow,apache/arrow,laurentgo/arrow,renesugar/arrow,apache/arrow,cpcloud/arrow,icexelloss/arrow,xhochy/arrow,kou/arrow,apache/arrow,laurentgo/arrow,wesm/arrow,icexelloss/arrow,renesugar/arrow,wesm/arrow,xhochy/arrow,wesm/arrow,renesugar/arrow,apache/arrow,cpcloud/arrow,kou/arrow,xhochy/arrow,renesugar/arrow,icexelloss/arrow,laurentgo/arrow,laurentgo/arrow,kou/arrow,xhochy/arrow,xhochy/arrow,xhochy/arrow,wesm/arrow,laurentgo/arrow,icexelloss/arrow,kou/arrow,renesugar/arrow,icexelloss/arrow,icexelloss/arrow,apache/arrow,xhochy/arrow,wesm/arrow,apache/arrow,kou/arrow,renesugar/arrow,wesm/arrow,cpcloud/arrow,cpcloud/arrow,xhochy/arrow,kou/arrow,kou/arrow,cpcloud/arrow,kou/arrow,xhochy/arrow,cpcloud/arrow,kou/arrow,wesm/arrow,wesm/arrow,xhochy/arrow,icexelloss/arrow,icexelloss/arrow,laurentgo/arrow,wesm/arrow,apache/arrow,laurentgo/arrow,renesugar/arrow,apache/arrow,icexelloss/arrow,kou/arrow,wesm/arrow,laurentgo/arrow,apache/arrow,cpcloud/arrow,laurentgo/arrow,kou/arrow,laurentgo/arrow,apache/arrow,kou/arrow,laurentgo/arrow,renesugar/arrow,apache/arrow,xhochy/arrow,icexelloss/arrow,cpcloud/arrow,wesm/arrow,wesm/arrow,cpcloud/arrow,icexelloss/arrow,xhochy/arrow,laurentgo/arrow,cpcloud/arrow,xhochy/arrow,wesm/arrow,icexelloss/arrow,cpcloud/arrow,renesugar/arrow,icexelloss/arrow,xhochy/arrow,renesugar/arrow,laurentgo/arrow,renesugar/arrow,kou/arrow,cpcloud/arrow,cpcloud/arrow,laurentgo/arrow,apache/arrow,icexelloss/arrow,apache/arrow,renesugar/arrow,apache/arrow,kou/arrow