Use adapter components and features to replace Enabled check functions
This MR is based on !529 (merged) and must not be merged before it
This MR is one of the pieces for breaking down !521 (closed).
It also removes *Enabled functions (and their associated constants) and uses the WantsComponent and WantsFeature functions of Adapter instead.
Required adjustments are made to the test cases to pass.
Closes #430 (closed)