Includes an initial implementation, some tests, and some documentation. Signed-off-by: Stephen Waits <steve@waits.net>