Refactoring SourcePosition

The main idea is that a source position belongs to a body of source
code. A new class Source was introduced as an abstraction over raw
source code.