drop pyyaml dependency
html sanitizing function
don't mess up encodings.

For some reason lxml takes our unicode and transcodes it to something
insane. So we encode to utf-16, and then lxml magically reads the
source correctly.
sanitize scraped html
pass encoding to the parser
make sure the last activity is caught
ProposalActivity table
do commit in caller, not in TablePatcher
save proposal activity to the database
show activity on proposal page
log the table name
update existing activity items
replace pdf icons with text