Add contract system and `cast` expression

Description

Add a contract system a la racket/contract.

WIP PR: 74
Commit: 7250d32d

Environment

None
Completed

Assignee

Ambrose Bonnaire-Sergeant

Reporter

Ambrose Bonnaire-Sergeant

Labels

None

Approval

None

Patch

None

Fix versions

Priority

Minor