Initial checkin: basic functionality

Currently uses fixed replace-strings as opposed to a templating
engine: this requires a lot of polishing.  Posting from email is a
planned feature.