Fix error location for semi rule

The semi rule now reports the node's end location as the error location.

Rules reporting a violation may now pass an optional location object containing the line and column numbers. This should improve the reporting of error locations in general.

Additionally, the ability to test error line number reporting was added to the eslint tester so that we can test error locations.