Better Line Count Reporting

This PR adds better reporting of where you are in a file in the event of preprocessing or compilation failures.

1. correctly passes and prints the name and statement for state variable declaration
2. add newline counting to machines
3. add `#line` directives that refer back to the line of the original file that failed.

(1) is nice because it prints a snippet of context in the event of failure. 

(2) is good to have around, however it is not perfect for state accumulation because cpp squashes whitespace, removes comments, and implements line continuation.  All of this throws off the ultimate line count.  Thus in pass 2, we don't report the line count since it will necessarily be undershot by some amount.

(3) It turns out that [the line control](https://gcc.gnu.org/onlinedocs/cpp/Line-Control.html#Line-Control) directive exists explicitly to allow code generators to fake that the code they generated is in the original file and location.  I spent a bunch of time trying to get the line counts correct for this until I realized that this could be computed as an inverse diff between the original file and the code generated one.  That seems to work perfectly.

Since the line counts are not directly used here, I would be open to removing them for this PR.