emerald: Fix invalid cast

This was invalid C++, but we are compiling with -fpermissive, thus this
was not caught.
themer: Pass an empty string instead of NULL pointer
README: Add a note wrt. modification of published history
makefiles: Move common compile-time flags to common.am
.gitignore: Update
libengine: Fix a typo
libengine: Add printf-like formatter with boost::format under the hood
Use the boost::format-based format instead of printf and friends
emerald: Replace gulong with unsigned long
emerald: Extract decor_t retrieval into separate function
Use glibmm equivalents of GLib spawn_* functions
libengine: Remove now useless cairo version check
Use C++ memory management (new/delete/vector) instead of malloc/free
Use value-initialization instead of explicit memset(zero)
libengine: Add a user-defined constructor to decor_t and window_settings

This way we don't need to be sure the corresponding structs are always
value-initialized.
Convert more uses of C-style strings to std::string
Remove redundant 'static' specifier from const data in namespace scope

In C++ static variables placed in namespace scope have internal
linkage by default. This was not the case in C.
Remove 'static' specifier from declarations of internal functions

A much better approach to control symbol visibility is to mark all
symbols hidden and only export explicitly marked symbols. This way it's
much harder to accidentally export an unwanted symbol.
Add casts where required by C++ rules
engines: Disambiguate a declaration with the same name as its type