configure.ac: hide internal symbols

Allows eliminating more dead code.  Adds two more C++ options that may
reduce the binary size.
configure.ac: disable C++ exceptions

We don't use exceptions currently.  Since allowing exceptions means a
lot of overhead, this commit disables the feature.
configure.ac: disable C++ RTTI

RTTI adds overhead to the binary, and we don't need that.
playlist_{any,song,queue}: convert to C++
update: convert to C++
string_util: use const_cast in C++ mode
db_save, state_file: convert to C++
playlist_vector: convert to C++
*_print: convert to C++
{decoder,player}_thread: convert to C++
don't include stdbool.h in C++ sources

The "bool" type is built-in.
db_lock: convert to C++
PlaylistVector: move struct playlist_metadata to PlaylistInfo.hxx
PlaylistInfo: rename class, use std::string
sticker: convert to C++
song_update: convert to C++
mapper: convert to C++
Directory: make the header C++ only
Directory: turn functions to methods