make: fix `FEATURES_REQUIRED` and `FEATURES_PROVIDED` a bit

* Features can be "nice to have" (fixes #1876)
* Expose features to C with `-DFEATURE_ABC`
* Allow drivers and modules to add their list to `FEATURES_PROVIDED` (requested in #1808)

See individual diffs for more information.