Update metadata.thrift to return model service level metadata. [0/n]
Update metadata.thrift to return model service level metadata. [0/n]

Summary:
Currently, `ThriftMetadata` is modeled as a symbol table for all definitions of a Thrift module and its included modules, bundled with the context information with the module itself. In practice, we want to query some service interface, and get metadata only related to that service. Therefore, some new abstractions are introduced to add service-specific metadata as `ThriftServiceMetadataResponse`. In the new model, `ThriftMetadata` is refined as a minimal lookup table required to describe a service/module, and users can generate separately module specific data in `ThriftModuleContext`, and pass it around where needed.

An upgraded version of `getRpcMetadata` called `getServiceMetadata` is also added, to model the new way of describing service definitions, since `getRpcMetadata` will only return `ThriftMetadata` which doesn't have context information in it now. In the future all `getRpcMetadata()` call sites should be replaced with `getServiceMetadata()`.

In short, the goal of this diff is to separate the definition of ThriftMetadata and ThriftModuleContext, meanwhile introducing the new API getServiceMetadata().

Differential Revision: D19254618

fbshipit-source-id: f57fd93a41161d61545eece1d3e1456fa56c76b4

facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift