Default example library prereq is now libcork

None of our projects uses glib anymore, they all use libcork instead.
Let's use that as the example library in the template.
All placeholders are now called APPNAME

There were a couple of places we were using "changeme" or
"PLEASE_DEFINE_APPNAME".  Now we're more consistent.
cork_ip_is_valid_network

This patch adds three new functions for verifying that an IP address is
a valid specifier for a CIDR network with a given CIDR prefix.  For the
IP address to be valid, all of the lower-order bits (everything below
the CIDR network prefix) must be set to 0.

Closes: #3
Built-in support for “system” errors

This patch adds the cork_system_error_set() function, which fills in the
current libcork error condition with information from the C library's
errno variable.  (We get the text of the error condition from the
strerror function.)
cork_once allows recursion

The cork_once macro now works properly when the initialization function
being called is recursive.  When a thread detects that the function is
already being executed, it checks to see if it's the thread doing that
execution.  If so, it immediately returns, to allow the recursion to
continue.  Otherwise, it waits for the other thread to finish the
initialization.
cork_unreachable() function

This patch adds a new function that can be used in code paths that are
unreachable, but that the compiler can't identify as such.  The function causes
the current program to abort with an error message indicating that the code path
should be unreachable.
Remove atomic functions for non-int types

Since not all atomic instrinsics are available on all platforms, we now only
provide them for “int” and “unsigned int”.  (Oh and the pointer types.)
Don't use GLOB_RECURSE in CMake build rules

CMake recommends explicitly listing out the source files in a library or
executable, rather than using GLOB or GLOB_RECURSE to find them automatically.
So that's what we'll do.
Custom IP address parsing functions

Before, we were using the inet_pton(3) function to parse IP addresses in the
cork_ip_init family of functions.  Unfortunately, different platforms have
different rules about which IP address strings are valid.  To eliminate this
inconsistency, we now use our own custom functions to parse IP addresses.

In addition, the test-core test case now contains many more expected-good and
expected-bad test cases (including all of the IPv6 address recommendations in
RFC 5952).  In addition, the test addresses are now defined in a single place in
the test-core.c file, with the IPv4, IPv6, and generic IP test cases deciding
whether each should be a successful or failed parse.
No default value for CMAKE_OSX_ARCHITECTURES

We no longer set a default value for CMAKE_OSX_ARCHITECTURES.  (Before,
we tried to set a default that would compile a universal binary.)  Now,
it's up to use to set this however you want.
Merge remote-tracking branch 'templates/c-template' into develop

* templates/c-template:
  No default value for CMAKE_OSX_ARCHITECTURES
  All placeholders are now called APPNAME
  Default example library prereq is now libcork
Install Valgrind suppression files

You can now place Valgrind suppression files into the share/valgrind
directory, and they will automatically be installed into
$PREFIX/share/valgrind.
Merge remote-tracking branch 'templates/c-template' into develop

* templates/c-template:
  Install Valgrind suppression files
Valgrind suppression file

This patch adds a Valgrind suppression file for libcork.  The cork_tls
macro doesn't let you finalize the thread-local data, so we need
suppressions for the thread-local error conditions and garbage
collection contexts.
“Supercommand” command-line applications

This patch defines several macros and functions for implementing
command-line applications that consist of several “subcommands”.  (The
`git` and `svn` commands are prime examples of these.)  The patch also
includes a sample application, and test cases that exercise all of the
built-in automatic functionality.
Better /bin/sh compatibility in run-test

I guess the run-test script had an if test that used a bash extension.
This makes it work with dash, too, and presumably any other /bin/sh
clone.
Test option parsing in CLI programs

We didn't have a test case that checked a subcommand that uses getopt.
It turns out the getopt expects an argv that's structured like you get
in your main() function — you have to have the “executable name” appear
as its first element.  The command driver code ensures this is the case
now; for nested command sets, the executable name will be the name of
the command set.
Additional functions for handling timestamps

There are now constructors for building a timestamp from gammaseconds and
nanoseconds fractional values, and accessor functions for extracting the
fractional portion in milli-, micro-, or nanoseconds.
Bumping soversion for 0.7.0
Merge branch 'release/0.7.0' into develop

* release/0.7.0:
  Bumping soversion for 0.7.0