Reland "Adding PRESUBMIT check to avoid mixing C, C++ and Objc-C/Obj-C++.""

This reverts commit 034a6b8a4cdf151ae7377c87c5b2b6156d658173.

Reason for revert: Trying to fix the issue of rtc_base:rtc_base which has 2 kind of source files but in exclusive if branches.

Original change's description:
> Revert "Adding PRESUBMIT check to avoid mixing C, C++ and Objc-C/Obj-C++."
> 
> This reverts commit 0c15c5332fea2bbf5fe29dd806f9f4e606eeb9b8.
> 
> Reason for revert: This causes problems in this moment. I have to fix a target in rtc_base before landing this presubmit check.
> 
> Original change's description:
> > Adding PRESUBMIT check to avoid mixing C, C++ and Objc-C/Obj-C++.
> > 
> > The error message will be something like:
> > 
> > GN targets cannot mix .c (or .cc) and .m (or .mm) source files.
> > Please create a separate target for each collection of sources.
> > Mixed sources:
> > {
> >   BUILD_GN_PATH: [
> >     [
> >       TARGET_NAME,
> >       [
> >         SOURCES
> >       ]
> >     ],
> >     ...
> >   ],
> >   ...
> > }
> > 
> > Bug: webrtc:7743
> > Change-Id: I45dd2c621b830e5aeb081fa8d17c9497a49c2554
> > Reviewed-on: https://webrtc-review.googlesource.com/1980
> > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> > Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#19897}
> 
> TBR=kjellander@webrtc.org,mbonadei@webrtc.org
> 
> Change-Id: I73ff609b0140719473afd36ead1632e5cc3b41f6
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:7743
> Reviewed-on: https://webrtc-review.googlesource.com/2180
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#19898}

TBR=kjellander@webrtc.org,mbonadei@webrtc.org

Change-Id: I18dbb5a6a01ac2a184446542c29b25a3e33508ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7743
Reviewed-on: https://webrtc-review.googlesource.com/2181
Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19900}
diff --git a/presubmit_test_mocks.py b/presubmit_test_mocks.py
index f7ead25..cbfc4f5 100644
--- a/presubmit_test_mocks.py
+++ b/presubmit_test_mocks.py
@@ -25,6 +25,15 @@
     # pylint: disable=unused-argument
     return self.files
 
+  def ReadFile(self, affected_file, mode='rU'):
+    filename = affected_file.AbsoluteLocalPath()
+    for f in self.files:
+      if f.LocalPath() == filename:
+        with open(filename, mode) as f:
+          return f.read()
+    # Otherwise, file is not in our mock API.
+    raise IOError, "No such file or directory: '%s'" % filename
+
 
 class MockOutputApi(object):
   """Mock class for the OutputApi class.
@@ -71,3 +80,6 @@
 
   def LocalPath(self):
     return self._local_path
+
+  def AbsoluteLocalPath(self):
+    return self._local_path