Introduce a mechanism to test for certain core features
We sometimes implement features that needs an up-to-date core to work correctly, but not always
a protocol bump is justified (because it's just a giant PITA). So we now have Client::coreFeatures()
that returns a bitmask of such optional features, which can be checked for at runtime and used to disable
client features if a too-old core is present.
Note that with every protocol bump the feature enum in quassel.h needs to be cleaned, and runtime checks
removed. Please mark all such places with a nice FIXME so we can find them easily.