Fix: same conversion sequence for left and right

promote_left and promote_right differ in that each promotes a different
argument, but the promotion algorithm they use for that argument is the
same. I was previously concatenating conversion functions in a different
order.
Generate all n^2 promotions

From a simple list of all numeric types from smallest to largest and a
list of functions to convert values of the hierarchy, our newest
template addition generates the Compatible instances for all type pairs.
Generate type annotations

Conversion functions such as realToFrac are typically polymorphic, which
leads to problems when haskell tries to infer the type of an expression
such as (realToFrac . fromIntegral). Type annotations solve the issue,
and we can generate them easily.