Add missing rsForEach()/rsSendToClient*() functions and API tests.

These were missing from the support library.

Change-Id: I53dd062fc0f1d9a6f0ce06d148c4047ebb338b71
diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index 2a3ebc9..f0cd726 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -539,7 +539,7 @@
 // Message routines
 //////////////////////////////////////////////////////////////////////////////
 
-static uint32_t SC_ToClient2(int cmdID, void *data, int len) {
+static uint32_t SC_ToClient2(int cmdID, const void *data, uint32_t len) {
     Context *rsc = RsdCpuReference::getTlsContext();
     return rsrToClient(rsc, cmdID, data, len);
 }
@@ -549,7 +549,7 @@
     return rsrToClient(rsc, cmdID, NULL, 0);
 }
 
-static uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) {
+static uint32_t SC_ToClientBlocking2(int cmdID, const void *data, uint32_t len) {
     Context *rsc = RsdCpuReference::getTlsContext();
     return rsrToClientBlocking(rsc, cmdID, data, len);
 }
@@ -1289,6 +1289,20 @@
 
 void __attribute__((overloadable)) rsForEach(rs_script script,
                                              rs_allocation in,
+                                             rs_allocation out) {
+    return SC_ForEach_SAA((Script *)script.p, (Allocation*)in.p, (Allocation*)out.p);
+}
+
+void __attribute__((overloadable)) rsForEach(rs_script script,
+                                             rs_allocation in,
+                                             rs_allocation out,
+                                             const void *usr,
+                                             uint32_t usrLen) {
+    return SC_ForEach_SAAUL((Script *)script.p, (Allocation*)in.p, (Allocation*)out.p, usr, usrLen);
+}
+
+void __attribute__((overloadable)) rsForEach(rs_script script,
+                                             rs_allocation in,
                                              rs_allocation out,
                                              const void *usr,
                                              uint32_t usrLen,
@@ -1309,14 +1323,20 @@
     return rsrUptimeMillis(rsc);
 }
 
-uint32_t rsSendToClientBlocking2(int cmdID, void *data, int len) {
-    Context *rsc = RsdCpuReference::getTlsContext();
-    return rsrToClientBlocking(rsc, cmdID, data, len);
+uint32_t rsSendToClient(int cmdID) {
+    return SC_ToClient(cmdID);
+}
+
+uint32_t rsSendToClient(int cmdID, const void *data, uint32_t len) {
+    return SC_ToClient2(cmdID, data, len);
 }
 
 uint32_t rsSendToClientBlocking(int cmdID) {
-    Context *rsc = RsdCpuReference::getTlsContext();
-    return rsrToClientBlocking(rsc, cmdID, NULL, 0);
+    return SC_ToClientBlocking(cmdID);
+}
+
+uint32_t rsSendToClientBlocking(int cmdID, const void *data, uint32_t len) {
+    return SC_ToClientBlocking2(cmdID, data, len);
 }
 
 static void SC_debugF(const char *s, float f) {