Cleaned up pattern matching of instructions/slots.

This can still be cleaned up a bit further using a macro. First I'll have to
read up on Rust macros a bit more before I do so.
Move InstructionArgument into its own file.