Improve code reuse between trans/_match.rs and check_match.rs

I believe there's more commonality to be found there but maybe small steps are better. I'm also in the process of documenting what I can, I will see if I can add it to this PR.

It also seems to me that ideally some of this stuff (especially the pattern sanity check) could live as a separate compiler-agnostic module but I understand this may not be the right time (if not the worst) to start the process of modularising rustc.
Right! The order is still relevant but the bit that ensures it already lives in middle::check_match::specialize_col(): https://github.com/jakub-/rust/blob/87589503d85426f3d99c1abcda95eb042f8bccf5/src/librustc/middle/check_match.rs#L616-623