input/rewind: convert to C++
input/ffmpeg: convert to C++
input/cdio_paranoia: convert to C++
despotify_utils: add missing copyright header
despotify_utils: include cleanup
despotify_utils: fix indent
input,playlist/despotify: convert to C++
input/archive: fix memory leak in error handler
FileSystem: extract DirectoryReader, improve the rest

- DirectoryReader is extracted to separate header
- FileSystem.cxx/FileSystem.hxx/DirectoryReader.hxx moved to fs/ subdir
- Functions return true on success, instead of 0 (where applicable)
- ReadLink return result instead of out parameter
- UnlinkFile is renamed to RemoveFile
- CheckExists/CheckIsRegular/CheckIsDirectory are renamed
  to PathExists/FileExists/DirectoryExists
Path: move to fs subdirectory
Makefile.am: introduce libfs
DecoderControl: fix typo in assertion check
archive/*: convert to C++
input_{internal,plugin}: convert to C++
PlayerControl: add second Cond object

This fixes a deadlock bug introduced by 18076ac9.  After all, the
second Cond was necessary.

The problem: two threads can wait for a signal at the same time.  The
player thread waits for the output thread to finish playback.  The
main thread waits for the player thread to complete a command.  The
output thread finishes playback, and sends a signal, which
unfortunately does not wake up the player thread, but the main
thread.  The main thread sees that the command is still not finished,
and waits again.  The signal is lost forever, and MPD is deadlocked.
Mapper: improve usage of Path class
decoder/ffmpeg: convert to C++
playlist/*: convert to C++
tag_file: convert to C++
input_stream: forward-declare the struct

Hide the definition from C code, to prepare the transition to C++.