[CR] Better construction input

Reviewers, please review and merge https://github.com/CleverRaven/Cataclysm-DDA/pull/7291 before this. This PR shares most its commits with that one, so once it is merged, this PR will be easier to review.

This is based on top of https://github.com/CleverRaven/Cataclysm-DDA/pull/7291 and https://github.com/CleverRaven/Cataclysm-DDA/pull/7350, which are waiting to be merged. The only new commit here (that isn't in https://github.com/CleverRaven/Cataclysm-DDA/pull/7291 nor https://github.com/CleverRaven/Cataclysm-DDA/pull/7350) is https://github.com/lucianposton/Cataclysm-DDA/commit/1872c56ba6d19b688f5084064c517b088c9d7b4a

Several interfaces make use of dynamic hotkeys e.g. assigning hotkeys to
inventory items. These dynamic hotkeys can conflict with action keybindings in
the current input_context. To address this, an API is added to input_context
to generate a list of keys suitable for use as dynamic hotkeys.