Remove include of stdlib.h from SkTypes.h.

Unfortunately, immintrin.h (which is also included by SkTypes)
includes xmmintrin.h which includes mm_malloc.h which includes
stdlib.h for malloc even though, from the implementation, it is
difficult to see why.

Fortunately, arm_neon.h does not seem to be involved in such
shenanigans, so building for Android will keep things sane.

TBR=reed@google.com
Doesn't change Skia API, just moves an include.

Review URL: https://codereview.chromium.org/1313203003
diff --git a/src/core/SkGraphics.cpp b/src/core/SkGraphics.cpp
index 093e7a6..f8d8b09 100644
--- a/src/core/SkGraphics.cpp
+++ b/src/core/SkGraphics.cpp
@@ -28,6 +28,8 @@
 #include "SkUtils.h"
 #include "SkXfermode.h"
 
+#include <stdlib.h>
+
 void SkGraphics::GetVersion(int32_t* major, int32_t* minor, int32_t* patch) {
     if (major) {
         *major = SKIA_VERSION_MAJOR;
diff --git a/src/core/SkRegion_path.cpp b/src/core/SkRegion_path.cpp
index ad01cac..b07d679 100644
--- a/src/core/SkRegion_path.cpp
+++ b/src/core/SkRegion_path.cpp
@@ -8,6 +8,7 @@
 #include "SkRegionPriv.h"
 #include "SkBlitter.h"
 #include "SkScan.h"
+#include "SkTSort.h"
 #include "SkTDArray.h"
 #include "SkPath.h"
 
@@ -476,11 +477,11 @@
     return count;
 }
 
-#include "SkTSearch.h"
-
-static int EdgeProc(const Edge* a, const Edge* b) {
-    return (a->fX == b->fX) ? a->top() - b->top() : a->fX - b->fX;
-}
+struct EdgeLT {
+    bool operator()(const Edge& a, const Edge& b) const {
+        return (a.fX == b.fX) ? a.top() < b.top() : a.fX < b.fX;
+    }
+};
 
 bool SkRegion::getBoundaryPath(SkPath* path) const {
     // path could safely be NULL if we're empty, but the caller shouldn't
@@ -508,13 +509,13 @@
         edge[0].set(r.fLeft, r.fBottom, r.fTop);
         edge[1].set(r.fRight, r.fTop, r.fBottom);
     }
-    qsort(edges.begin(), edges.count(), sizeof(Edge), SkCastForQSort(EdgeProc));
 
     int count = edges.count();
     Edge* start = edges.begin();
     Edge* stop = start + count;
-    Edge* e;
+    SkTQSort<Edge>(start, stop - 1, EdgeLT());
 
+    Edge* e;
     for (e = start; e != stop; e++) {
         find_link(e, stop);
     }
diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp
index 70dc8f9..922fc7e 100644
--- a/src/core/SkResourceCache.cpp
+++ b/src/core/SkResourceCache.cpp
@@ -13,6 +13,7 @@
 #include "SkResourceCache.h"
 
 #include <stddef.h>
+#include <stdlib.h>
 
 DECLARE_SKMESSAGEBUS_MESSAGE(SkResourceCache::PurgeSharedIDMessage)
 
diff --git a/src/core/SkTime.cpp b/src/core/SkTime.cpp
index b8e4236..fa6c044 100644
--- a/src/core/SkTime.cpp
+++ b/src/core/SkTime.cpp
@@ -12,8 +12,8 @@
     if (dst) {
         int timeZoneMinutes = SkToInt(fTimeZoneMinutes);
         char timezoneSign = timeZoneMinutes >= 0 ? '+' : '-';
-        int timeZoneHours = abs(timeZoneMinutes) / 60;
-        timeZoneMinutes = abs(timeZoneMinutes) % 60;
+        int timeZoneHours = SkTAbs(timeZoneMinutes) / 60;
+        timeZoneMinutes = SkTAbs(timeZoneMinutes) % 60;
         dst->printf("%04u-%02u-%02uT%02u:%02u:%02u%c%02d:%02d",
                     static_cast<unsigned>(fYear), static_cast<unsigned>(fMonth),
                     static_cast<unsigned>(fDay), static_cast<unsigned>(fHour),
diff --git a/src/pathops/SkOpAngle.cpp b/src/pathops/SkOpAngle.cpp
index 36c0dd9..ac596fd 100644
--- a/src/pathops/SkOpAngle.cpp
+++ b/src/pathops/SkOpAngle.cpp
@@ -809,7 +809,7 @@
 }
 
 bool SkOpAngle::oppositePlanes(const SkOpAngle* rh) const {
-    int startSpan = abs(rh->fSectorStart - fSectorStart);
+    int startSpan = SkTAbs(rh->fSectorStart - fSectorStart);
     return startSpan >= 8;
 }
 
diff --git a/src/pathops/SkOpSegment.cpp b/src/pathops/SkOpSegment.cpp
index fc32643..a52ef4a 100644
--- a/src/pathops/SkOpSegment.cpp
+++ b/src/pathops/SkOpSegment.cpp
@@ -1479,7 +1479,7 @@
     int deltaSum = SpanSign(start, end);
     *maxWinding = *sumMiWinding;
     *sumWinding = *sumMiWinding -= deltaSum;
-    SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM);
+    SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM);
 }
 
 void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sumMiWinding,
@@ -1498,8 +1498,8 @@
         *oppMaxWinding = *sumSuWinding;
         *oppSumWinding = *sumSuWinding -= oppDeltaSum;
     }
-    SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM);
-    SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*oppSumWinding) <= DEBUG_LIMIT_WIND_SUM);
+    SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM);
+    SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*oppSumWinding) <= DEBUG_LIMIT_WIND_SUM);
 }
 
 void SkOpSegment::sortAngles() {
@@ -1774,8 +1774,8 @@
 bool SkOpSegment::UseInnerWinding(int outerWinding, int innerWinding) {
     SkASSERT(outerWinding != SK_MaxS32);
     SkASSERT(innerWinding != SK_MaxS32);
-    int absOut = abs(outerWinding);
-    int absIn = abs(innerWinding);
+    int absOut = SkTAbs(outerWinding);
+    int absIn = SkTAbs(innerWinding);
     bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn;
     return result;
 }
diff --git a/src/pathops/SkOpSpan.cpp b/src/pathops/SkOpSpan.cpp
index 5c89c73..df3ef3c 100755
--- a/src/pathops/SkOpSpan.cpp
+++ b/src/pathops/SkOpSpan.cpp
@@ -369,7 +369,7 @@
         this->globalState()->setWindingFailed();
         return;
     }
-    SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(oppSum) <= DEBUG_LIMIT_WIND_SUM);
+    SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(oppSum) <= DEBUG_LIMIT_WIND_SUM);
     fOppSum = oppSum;
 }
 
@@ -379,6 +379,6 @@
         this->globalState()->setWindingFailed();
         return;
     }
-    SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(windSum) <= DEBUG_LIMIT_WIND_SUM);
+    SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(windSum) <= DEBUG_LIMIT_WIND_SUM);
     fWindSum = windSum;
 }
diff --git a/src/pathops/SkPathOpsDebug.h b/src/pathops/SkPathOpsDebug.h
index ee2c291..969a990 100644
--- a/src/pathops/SkPathOpsDebug.h
+++ b/src/pathops/SkPathOpsDebug.h
@@ -9,6 +9,8 @@
 
 #include "SkPathOps.h"
 #include "SkTypes.h"
+
+#include <stdlib.h>
 #include <stdio.h>
 
 #ifdef SK_RELEASE
diff --git a/src/pathops/SkPathOpsTypes.cpp b/src/pathops/SkPathOpsTypes.cpp
index c3de93a..bf43c14 100644
--- a/src/pathops/SkPathOpsTypes.cpp
+++ b/src/pathops/SkPathOpsTypes.cpp
@@ -160,7 +160,7 @@
         return a == b ? 0 : SK_MaxS32;
     }
     // Find the difference in ULPs.
-    return abs(floatIntA.fSignBitInt - floatIntB.fSignBitInt);
+    return SkTAbs(floatIntA.fSignBitInt - floatIntB.fSignBitInt);
 }
 
 // cube root approximation using bit hack for 64-bit float
diff --git a/src/utils/SkEventTracer.cpp b/src/utils/SkEventTracer.cpp
index d9f9258..6176e1c 100644
--- a/src/utils/SkEventTracer.cpp
+++ b/src/utils/SkEventTracer.cpp
@@ -9,6 +9,8 @@
 #include "SkEventTracer.h"
 #include "SkLazyPtr.h"
 
+#include <stdlib.h>
+
 class SkDefaultEventTracer : public SkEventTracer {
     SkEventTracer::Handle
         addTraceEvent(char phase,
diff --git a/src/utils/SkParse.cpp b/src/utils/SkParse.cpp
index f6e2a43..446f9d4 100644
--- a/src/utils/SkParse.cpp
+++ b/src/utils/SkParse.cpp
@@ -9,6 +9,8 @@
 
 #include "SkParse.h"
 
+#include <stdlib.h>
+
 static inline bool is_between(int c, int min, int max)
 {
     return (unsigned)(c - min) <= (unsigned)(max - min);
diff --git a/src/utils/SkRTConf.cpp b/src/utils/SkRTConf.cpp
index 20b8b43..5c99d27 100644
--- a/src/utils/SkRTConf.cpp
+++ b/src/utils/SkRTConf.cpp
@@ -8,6 +8,8 @@
 #include "SkRTConf.h"
 #include "SkOSFile.h"
 
+#include <stdlib.h>
+
 SkRTConfRegistry::SkRTConfRegistry(): fConfs(100) {
 
     SkFILE *fp = sk_fopen(configFileLocation(), kRead_SkFILE_Flag);