icy_server: pass pointer to _metadata_page()

Don't use va_list.
icy_server: convert to C++
page: convert to C++
event/SocketMonitor: add methods Read(), Write()
event/SocketMonitor: OnSocketReady() returns bool
event/BufferedSocket: move output buffer to FullyBufferedSocket

BufferedSocket has just an input buffer, and FullyBufferedSocket adds
the output buffer.
ServerSocket: move to libevent.a
ServerSocket: expose the class

Eliminate the C wrappers.
output/httpd: add constructor, destructor, Configure()
output/httpd: forward-declare class HttpdClient
output/httpd: safer cast, consider offset
ServerSocket: replace callback with virtual method
event/ServerSocket: add method GetEventLoop()
input/Rewind: remove bogus assertion
Main: delete the EventLoop after everything else

Fixes crash when another object attempts to access the EventLoop
during destruction.
event/Loop: add method WakeUp()
event/SocketMonitor: wake up the event loop after flag change
output/httpd: use the BufferedSocket class for HttpdClient
archive/zzip: fix memory leak
archive/bzip2: create file only after stream has been opened

Simplify error handling.