use CompilerInfo rather than CompilerId for resolving flags and
path templates.

CompilerInfo contains more information about the compiler than
CompilerId, which just stores the flavour and version. In particular,
CompilerInfo knows an AbiTag, which can be used to tell binary
incompatible results from the same compiler apart, and detailed
information about supported languages and extensions.

Some fields in CompilerInfo may be left unknown (Nothing). This can
be used in the future to allow partially resolving configurations
based on supported languages or extensions.