logging: introduce library-internal logging categories

We do this by using a trick: library-internal log categories use
negative subsystem numbers, which are converted into positive
array indexes at the time of logging.

library-internal log categories need to be knwo at compile-time,
while application-specified categories now are of unlimited number,
as they are dynamically allocated.
diff --git a/src/application.c b/src/application.c
index 5f8f447..b7e943d 100644
--- a/src/application.c
+++ b/src/application.c
@@ -44,7 +44,7 @@
 
 int osmo_init_logging(const struct log_info *log_info)
 {
-	log_init(log_info);
+	log_init(log_info, NULL);
 	osmo_stderr_target = log_target_create_stderr();
 	if (!osmo_stderr_target)
 		return -1;