Prevent dependency cycle due to system_shared_libs expansion

It was discovered that we were building some objects inconsistently due
to an optimization in cc_library to only build objects once and use them
for both the static and shared libraries. But static libraries didn't
get system_shared_libs set automatically, and we didn't notice that we
would have built the objects differently.

So static libraries now get the default system_shared_libs, we allow
adjusting that for static vs shared in a cc_library, and we disable the
optimization if the linked libraries are configured differently between
static and shared in a single cc_library.

This triggers dependency cycles for static libraries that libc/libdl
use, so fix those cycles here.

Test: treehugger
Change-Id: I3cf7fda161a05ec32e0c1e871999720d12a4d38e
diff --git a/libc/Android.bp b/libc/Android.bp
index 6b46ba0..ad9ffbf 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1623,9 +1623,15 @@
     ],
     name: "libstdc++",
     static_ndk_lib: true,
-    system_shared_libs: ["libc"],
     static_libs: ["libasync_safe"],
 
+    static: {
+        system_shared_libs: [],
+    },
+    shared: {
+        system_shared_libs: ["libc"],
+    },
+
     //TODO (dimitry): This is to work around b/24465209. Remove after root cause is fixed
     arch: {
         arm: {