Begone, external parts list!

Fixes #3574, fixes #3576, that one issue on the forums about k_dynamics, and a whole bunch of issues that *haven't even been reported yet* by tearing the external_parts list out by the roots:

* Adds two functions to replace it, and to help with any future additions:
  * all_parts_with_feature, which works like part_with_feature but returns all parts in the entire vehicle with that feature.
  * all_parts_at_location, which returns all parts that have the specified location.
* Fixes broken wheels not triggering traps and not being counted in the vehicle submerging check
* Makes part_displayed_at return -1 safely instead of segfaulting on an empty square (my fault, figured I'd fix it here).
* Clean up some outdated comments