Add more context to unification errors internally

This is a step towards re-enabling and greatly simplifying argument-specific error reflection