do ProtocolEvents fixing only when there is required fields missing in the requested schema

https://issues.apache.org/jira/browse/PARQUET-61
This PR is trying to redo the https://github.com/apache/incubator-parquet-mr/pull/7

In this PR, it fixes the protocol event in a more precise condition:
Only when the requested schema missing some required fields that are present in the full schema

So even if there a projection, as long as the projection is not getting rid of the required field, the protocol events amender will not be called.

Could you take a look at this ? @dvryaboy @yan-qi
please correct me if I am wrong, but I believe this may be a bug.

I think it's possible to have a group type field that is optional, which inside it has a required field. Continuing here means the recursive check below will not get executed. So I think you should get rid of the else statement (and while we are in here, surround the "return true" above in squiggly brackets).

We should write a test to verify this behavior one way or another.