Mavlink library build changes

This pull request modifies the code for selecting the appropriate MAVLink dialect. It reorganizes it so that it's easier to follow, adds a ton of output specifying why the current dialect was chosen/unavailable, and adds checks for if the files for dialects exist before attempting to use them.

This code is written assuming that only a single DIALECT can be selected at a time. The old code made this assumption in a few locations as well, so I don't think this will break anything as I don't think the old code worked for multiple dialects. An explicit error if multiple dialects are selected would likely be worthwhile, but I didn't want to add that check until I confirmed that this is the proper behavior.