Parse and preserve parentheses around option names

@JakeWharton 
Redo of zachmargolis/protoparser#2

Parentheses around option names are meaningful to the protobuf compiler, they differentiate between custom and built-in options.

From the previous PR:

> If I understand the Google Protobuf Documentation on [Custom Options](https://developers.google.com/protocol-buffers/docs/proto#options), we need to wrap custom options in parens, but leave the built-in ones paren-free.

> > ```protobuf
> > import "google/protobuf/descriptor.proto";
> > 
> > extend google.protobuf.MessageOptions {
> >   optional string my_option = 51234;
> > }
> > 
> > message MyMessage {
> >   option (my_option) = "Hello world!";
> > }
> > ```
> > Here we have defined a new message-level option by extending `MessageOptions`. When we then use the option, the option name must be enclosed in parentheses to indicate that it is an extension.
The existing code works AFAICT....added tests in f3147c59bf1185ef4c729ff815fc42b8f4ff0de4 to verify, passed without me having to update.