fixed iterator issue

Fixed an iterator issue in DiagnosticFormatterConsole where i-- would be called
on an iterator i = shifts.begin().
added DiagnosticBuilder

Simplifies the task of assembling a diagnostic inside a given context.
fixed SourceLocation issue

The first character in the first source buffer added to SourceManager would have an
ID of 0, the reserved "invalid" value. SourceManager now starts at 1.
more parser stuff