Refactor|libcore: Apply pimpl in Process
Scripting|libcore: Added ScopeStatement

ScopeStatement is used for executing statements in a specific record,
for example for declaring a class record with member functions.
Cleanup|libcore: Renamed serialization protocol version enums

Each enum value now describes the change that took place, making
it easier to keep track of the evolution of the protocol.
Scripting|libcore: More legibility for printed records

All columns of the output are now left-aligned, making it easier to
follow the structure of nested records. Extra whitespace was removed
to allow more room for deep records.

Printed arrays and dictionaries apply appropriate newlines and indents
to the elements, if they contain multiple lines.
Scripting|libcore: Added the name scope keyword (->)

This is nothing like C's -> operator but instead a special keyword
that lets NameExpression know where to start looking for an identifier.
It allows accessing shadowed members from super records:

self.Base->__init__()
Cleanup
Scripting|libcore: Renamed the built-in "Script" module to "Core"

This module is intended to contain all built-in core functionality
of the language (data types, etc.).
Scripting|libcore: Parsing and executing a scope statement

ScopeStatement executes a compound in a specific namespace. This makes
it possible to define member functions and other members in a named
record.