Use more types than just 'unsigned' in the linker.

Still chipping away at the situation where every variable in the
linker was of type 'unsigned'. This patch switches counts over to
being size_t and adds an explicit type for init/fini function pointers
and arrays of function pointers.

Also improve logging from CallArray.

Also remove trailing "\n"s from log messages.

Change-Id: Ie036d2622caac50f4d29f0570888bb527661d77e
diff --git a/linker/linker_debug.h b/linker/linker_debug.h
index 6aeb9ac..8fc235f 100644
--- a/linker/linker_debug.h
+++ b/linker/linker_debug.h
@@ -63,14 +63,14 @@
 __LIBC_HIDDEN__ extern int gLdDebugVerbosity;
 
 #if LINKER_DEBUG_TO_LOG
-#define _PRINTVF(v,x...)                                        \
-    do {                                                          \
-        if (gLdDebugVerbosity > (v)) __libc_format_log(5-(v),"linker",x);  \
+#define _PRINTVF(v,x...) \
+    do { \
+      if (gLdDebugVerbosity > (v)) __libc_format_log(5-(v),"linker",x); \
     } while (0)
 #else /* !LINKER_DEBUG_TO_LOG */
-#define _PRINTVF(v,x...)                           \
-    do {                                             \
-        if (gLdDebugVerbosity > (v)) __libc_format_fd(1, x);  \
+#define _PRINTVF(v,x...) \
+    do { \
+      if (gLdDebugVerbosity > (v)) { __libc_format_fd(1, x); write(1, "\n", 1); } \
     } while (0)
 #endif /* !LINKER_DEBUG_TO_LOG */