cargo fix --edition
Port `width`, and also add the `scan` media feature so I don't need to add ugliness just to workaround the unused keyword_evaluator macro.
This moves most of the code to be Rust, except potentially some evaluator functions, and allows to unblock the use case from any-hover / any-pointer and remove nsMediaFeatures. Differential Revision: https://phabricator.services.mozilla.com/D2976