Application identifiers and status template parameters

stasher::heartbeat's template parameter defines the class that holds each instance's metadata:

typedef stasher::heartbeat<std::string, std::string> heartbeat;

stasher::heartbeat takes two template parameters: a class that identifies each instance of an application, and a class that defines each instance's status. In this example, both are a std::string. Both classes can be any class that can be serialized by LIBCXX. Depending on other usage of those classes, they may also need to support stringability using LIBCXX's x::tostring(). The application ID class must also implement strict weak ordering, using operator <(), and possibly other kinds of ordering operators.

The application heartbeat is, essentially, a std::map<application_id_class,status_class>. Additionally, the status class can be a void. This specifies no metadata, and stasher::heartbeat just posts periodic updates without any associated status metadata.