make error messages polymorphic over locations
make error messages polymorphic over locations

Summary: In order to replace `printable_error`s with `error`s on the server, we need the ability to normalize and concretize `loc`s, which requires that the type be polymorphic over its location. `error_message`s can appear in the error type, so we make them polymorphic here.

Reviewed By: nmote

Differential Revision: D14115492

fbshipit-source-id: ecc6f80cba17e7e6772774f3bad80a3dbda6812b

nmote/flow,nmote/flow,nmote/flow,nmote/flow,nmote/flow,nmote/flow,nmote/flow