A workaround for a string C++11 ABI issue on Centos7
Thank you for the explanation and for sending in this PR. Unfortunately, we cannot accept it because TensorFlow has official support only for Ubuntu and Clang. In addition, we are in process of updating our Protobuf dependency so that patch file might go away in the near future. We recommend including this fix in your copy of TensorFlow repo. 
I've discovered that a large number of TF unit tests fail when built on CentOS 7. Investigation revealed the following.
* CentOS 7 (or rather the gcc it comes with) uses the "old" C++11 string ABI. 
* The significant difference between ABIs is that, in the "old" ABI, std::string with internal representation containing all zeros is illegal, but, in the "new" ABI, it is just an empty string: https://godbolt.org/z/dYWK1Mh8P
* Many TF actions involving protobuf use an internal protobuf object ("fixed_address_empty_string") which is supposed to represent a global empty string. This object (or, more precisely, the std::string it encapsulates) is never constructed and contains all zeros. (Protobuf makes an effort to prevent it from being automatically constructed at initialization time.) Protobuf's authors may have expected that an explicit constructor method would be executed by the client (in our case, TF, some time early during initialization - I'm not sure where that would go in TF source), but, since, with the new ABI, everything works fine as-is, this omission was never noticed.
* As soon as someone tries to access that object, there's a segfault.

This patch adds explicit construction of that object on first access, as a workaround.