Fix #line.

Make #line directive work right. Change generation of
source references to guarantee proper order of lines/columns.
Change display for zero length reductions to us a ^ instead
of a *. When in doubt generating references use a zero
length reference to the end point (current lexer position).