Introduce compiler information framework

Introduce functionality to detect the available compiler types, versions
and targets.