I/O changes

 * filters take references to underlying Sources/Sinks instead of pointers
 * remove "more" parameter from Sink::write(…)
 * rename Sink::finish() to "flush"
 * introduce Iterator{Source,Sink} template class and reimplement {Memory,String,Vector}{Source,Sink}
 * introduce transcode(…) overloads taking Source- and Sink-typed arguments
 * move getaddrinfo support into new dns.{h,cpp}