When building any program that uses Gtkmm (with Atkmm support) ALL modules need to agree about the status of GTKMM_ATKMM_ENABLED. Otherwise 'Gtk::Widget' can have different sizes in different modules. If that happens we can end up with all manner of inexplicable run-time crashes and hangs.
GTKMM_ATKMM_ENABLED gets #defined in 'gtkmmconfig.h'. So let's #include that file at the earliest possible opportunity (where we know it'll then have a consistent value for every compilation unit).
1) C4244 (conversion loses data) - e.g. when re-assigning a var of (say) int64_t to a lesser type, such as int32_t
2) C4275 (an exported class was derived from a class which is not exportable) - e.g. when deriving classes from std::set, std::exception or some other class which isn't declared with 'dllexport'
These changes are MSVC specific and shouldn't affect the other builds.
(incidentally, libpbd already offers a function called 'fast_log2()'. Not sure if that could have been used instead...)