Better error messages for duplicate labels in rows, fix #680

@joneshf @jdegoes Could you please review?
Not for this PR, but ultimately it would be nice to use an ADT for all possible classes of errors (currently there's only the generic ExprError and TypeError types), which captures the values and context of the error. String generation would come later based on data stored in the ADT.