Slight printing changes for debugging

Adds source context at boundaries of source (beginning and end),
and adds some spacing to look a little nicer
Fixed bug where string match would fail on empty string

If "", which should happily match against nothing and succeed,
was encountered when the source index was at EOF, it would fail
because it would see we are at EOF and exit with failure. Added
check to ensure "" will always succeed.