Convert DisplayList to a value-type wrapper

Make DisplayList its own type instead of an alias,
pushing the Skia aspect behind it mostly. Removes a bunch
of manual memory management and opens the door to DisplayList
being a union type with multiple implementations

Test: builds (somehow), boots, hwuiunit passes, CtsUiRendering passes
Change-Id: I1d7806aa3afc5d9ece08b06959920078a5814c59
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index 6e7493c..d14dc36 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -98,7 +98,7 @@
             continue;
         }
         SkASSERT(layerNode->getLayerSurface());
-        SkiaDisplayList* displayList = (SkiaDisplayList*)layerNode->getDisplayList();
+        SkiaDisplayList* displayList = layerNode->getDisplayList().asSkiaDl();
         if (!displayList || displayList->isEmpty()) {
             ALOGE("%p drawLayers(%s) : missing drawable", layerNode, layerNode->getName());
             return;
@@ -288,7 +288,7 @@
 
 // recurse through the rendernode's children, add any nodes which are layers to the queue.
 static void collectLayers(RenderNode* node, LayerUpdateQueue* layers) {
-    SkiaDisplayList* dl = (SkiaDisplayList*)node->getDisplayList();
+    SkiaDisplayList* dl = node->getDisplayList().asSkiaDl();
     if (dl) {
         const auto& prop = node->properties();
         if (node->hasLayer()) {