Otherwise, we end up propagating those dependencies into targets that link against that library, which creates unnecessary link-time dependencies. Also included are changes to readd now missing dependencies to tools that actually need them.
This adds component declarations so that users can select to not build certain parts of the OS.
By using serenity_app() instead of serenity_bin() in the CMakeLists.txt, we can embed an icon as usual.