Add function instructions and change Instruction semantics.

The Instruction logic between performing and action and how to advance
the interpreter should be seperate, so they are in the action() and next()
methods now. This makes it so we can reuse action() code from other instructions
without worrying about what crazy things they will do to the line number.