fix multiple intersection logic

When three or more curves intersect at the same point, ensure that
each curve records the intersections of the others. This fixes a
number of cubic tests.

TBR=reed@google.com
BUG=skia:3588

Review URL: https://codereview.chromium.org/1105943002
diff --git a/tests/PathOpsDebug.cpp b/tests/PathOpsDebug.cpp
index f5708eb..d2e8bd0 100755
--- a/tests/PathOpsDebug.cpp
+++ b/tests/PathOpsDebug.cpp
@@ -945,6 +945,7 @@
         const SkOpPtT* oPt = this->ptT()->next();
         SkDebugf(" seg/span=%d/%d", oPt->segment()->debugID(), oPt->span()->debugID());
     }
+    SkDebugf(" adds=%d", fSpanAdds);
 }
 
 void SkOpSpanBase::dumpCoin() const {
@@ -1319,23 +1320,23 @@
 }
 #endif
 
-const SkOpAngle* DebugAngle(const SkTArray<SkOpContour*, true>* contours, int id) {
+const SkOpAngle* DebugAngle(const SkTDArray<SkOpContour* >* contours, int id) {
     return (*contours)[0]->debugAngle(id);
 }
 
-SkOpContour* DumpContour(const SkTArray<SkOpContour*, true>* contours, int id) {
+SkOpContour* DumpContour(const SkTDArray<SkOpContour* >* contours, int id) {
     return (*contours)[0]->debugContour(id);
 }
 
-const SkOpPtT* DebugPtT(const SkTArray<SkOpContour*, true>* contours, int id) {
+const SkOpPtT* DebugPtT(const SkTDArray<SkOpContour* >* contours, int id) {
     return (*contours)[0]->debugPtT(id);
 }
 
-const SkOpSegment* DebugSegment(const SkTArray<SkOpContour*, true>* contours, int id) {
+const SkOpSegment* DebugSegment(const SkTDArray<SkOpContour* >* contours, int id) {
     return (*contours)[0]->debugSegment(id);
 }
 
-const SkOpSpanBase* DebugSpan(const SkTArray<SkOpContour*, true>* contours, int id) {
+const SkOpSpanBase* DebugSpan(const SkTDArray<SkOpContour* >* contours, int id) {
     return (*contours)[0]->debugSpan(id);
 }