Update ERROR macros to provide some additional convenience

ERROR() and ERROR_AT_COLUMN() now rely on ERROR_AT() which performs
the actual work. ERROR_AT() can be used when specifying a line for an
error is necessary. Others are simply for convenience.

Renamed error parameter to avoid name masking callback name