Fix backwards implementation of StatementBlock.is_empty

The implementation was actually effectively testing is_not_empty.
Add a special Void type to the type system.

This type exists to represent the result type of a call to a function that
returns no value. The interpreter refuses to allow a symbol to be
initialized with this type, and this type supports no operations, so
there isn't any valid spot for a void function call to go except as the
root of an expression statement, which ignores the expression's type.
Implement execute() for the "pass" statement.
Utility functions on ExpressionList for mass-evaluating.
Add a dev dependency on "mock" so we can use it in tests.
Implement evaluate for CallExpr