Add Source class to VMLib

This also fixes a couple of issues when parsing file contents:
* Newlines are chomped before processing the line
* Not specifying a name would cause a failure in parse

Also, in the File class, properly update to write newline at EOF.