This commit breaks the API (NewGossip -> New), but improves the overall correctness dramatically (including various bug fixes), also thanks to the decent test suite.