Add procedure support

- when a call block is executed, the block is copied, any parameters are
   evaluated and stored on the copy, then the copy is pushed on the stack
- when a getParam block is executed it finds the last call block on the
  stack, and then gets the already evaluated parameters from there.
- based on PR #21 by @bobbybee, passes all of @nathan's tests there