Add command-line parser
Extract common regex-related matching methods and put them in their own
file.
Define and write methods for parsing and loading the vdev config file.
Add utility method for walking a directory in lexographical order and
calling a visitor on each dirent.  Also, update vdev_subprocess to
return the exit status.
Remove unneeded device events for "change", "online", "offline", and
"move."  Also, do credentials-checking when reading a netlink packet (to
ensure we only get messages from root and the kernel, and not udev).
Refactor the netlink-handling logic to yield new devices as they are
discovered, and outsource the thread management to os/common
Add common logic for handling thread and lifecycle management for the
OS-specific interfaces.
Take actions when a device state changes.  Offer "synchronous" actions
which block, and asynchronous actions which fork and run separately.
Allow the administrator to define actions based on matching the device
path, the event, and any OS-specific key/value pairs.
Move regex logic and directory-scanning logic over to match.cpp and
util.cpp.  Finish acl-matching and permissions-setting logic.  Add a
sanity-checker to ensure that an acl is well formed.
Flesh out the workqueue API so that OS-specific routines can piecemeal
populate a device request.
The OS-specific interface is only responsible for discovering the next
device event, and doing its own lifecycle management.  No need to worry
about processing state changes, since that's vdev's job.
Add top-level vdev state bundle, and lifecycle management routines to
bring up and shut down vdev.  Needs testing, obviously.
Flesh out main() so it initializes vdev correctly, and starts the
various subsystems in the right order.
Merge branch 'master' of https://github.com/jcnelson/loginfs