Restore the ability to disable key bindings by setting them to `null` in your keymap (#3921)

* Fix an incorrect use of `Any::type_id` that prevented the disabling of
key bindings
* Restructured the representation of disabled key bindings so that they
handle context predicates correctly. Previously, to disable key binding,
you needed to supply the exact same context predicate (e.g. `Editor &&
mode == "full"`) as the binding that you are trying to disable. Now, the
context predicates of disabled key bindings are evaluated just like any
other context predicate (with the current context) to see if they apply.

Release Notes:

- Fixed an issue where disabling key bindings didn't work. To disable a
key binding, set it to `null` in your keymap.
7e810d7e0dMax Brunsfeld committed on 1/5/2024, 9:51:47 PM· committed by GitHubparentsbe98ff48a96562
5 files changedLine totals unavailable