Top-level proto3 field presence support
Allows callers to specify whether they support proto3 field-precence. See field_presence.md and implementing_proto3_presence.md.
Also implements helper methods such as HasPresence(), InRealOneOf() and others to facilitate usage of field-presence.
Credit to @sarthak40 for the excellent work to get this through.