Use the real hostname in responses.

Only use "localhost" now when the real hostname isn't available for some
reason.
Clean up session & parsing a little.

This makes Session responsible for reading both commands and data
sections, rather than having these split awkwardly between downstream &
session.
Add some comments on sessions.
Add a .gitignore.
Add experimental rate monitoring.

Eventually, this will let failmail send email to a designated address
(e.g. a pager) if the rate of incoming email exceeds some limit. For
now, it just logs a message.