xmpp, xmpp/sasl2: improve test error handling
Also fixes several ineffectual assignments in test files.
internal/marshal: add package description
interal/marshal: add a few tests
all: move encoding funcs into internal/marshal
docs: add liberapay button to readme
examples/echobot: use struct based stanza API
xmpp: fix handler argument types in docs
all: allow encoding structs from within handlers
xmpp: use new internal encode functions
internal: add XML struct encoding workaround
This is a very inefficient work around for the encoding/xml package not
supporting any way to encode to a token stream.
Hopefully it will eventually be replaced if the encoding/xml package
ever gets updated.
.builds: go back to the old way of running tools
The go.mod file keeps having its dependencies removed, or having xmpp
added as a dependency for some reason. Until modules are better
understood or less buggy, and until gosec and golint have tags, just
keep doing them last and modifying the main go.mod file.
.builds: run gosec during linting phase
examples/echobot: ignore gosec false positive
xmpp: add build status to readme
xmpp: don't return io.EOF from Serve
examples/echobot: add graceful shutdown
xmpp: take input stream lock when closing stream
xmpp: minor refactor of input stream handling