Capture whence information in all Serval logging API entry points.
Introduce the LogLevel enum type to avoid exposing internal C API
details in the Swift API.
Rename Swift API methods and types to use camelCase naming style, to
distinguish it from the C API, which uses under_score naming style.
On iOS, the log outputter uses Apple's Unified Logging System, but on
Mac OS, the logger uses the older Syslog API so that it will compile on
platforms older than macOS 10.13 High Sierra.
The daemon API is built as a Swift module called ServalDNA.
The new CliContext class allows easy implementation of CLI output using
Swift code. The new CliContextFile subclass is the obvious first
implementation, equivalent to cli_stdio.c. The 'servaldswift'
executable now uses CliContextFile to print its CLI output to standard
output.
The new delegated log output support constructs each log line in a
buffer and prints it by calling the delegate's 'print' function at
end-of-line. The 'servaldswift' executable now provides a log output
delegate in Swift that simply prints to standard error, replacing
log_output_console.o, which is omitted from its link.
If the Swift 3 or Swift 4 compiler is present or passed to the configure
script in the SWIFTC variable, then the Makefile will compile a Swift
'servaldswift' executable to ensure that the module map links correctly
into a stand-alone Swift program.
Use the gold linker if supported, to avoid relocation errors on symbols
produced by Swift when linking dynamic libraries.