Opcode caches are now reset each time the JVM is run, which fixes #144.

It works in the following way:
* Before we go to run `clinit`, we call ClassFile.initialize().
* ClassFile.initialize() will tell all of its methods, its superclasses, and its interfaces to initialize().
* Method.initialize() sets a bool that tells it to clear its opcodes' caches the next time it is run.

This way, we only have to clear an instruction's cache the first time its method is run during a particular JVM instance.

The opcodes save their original `execute` function when they are constructed, which is restored when the opcode is reset. This encourages us to do more aggressive opcode rewriting in the future with the knowledge that the opcode will reset. :-)

We do waste time by reinitializing a method the first time it is run ever, but for the sake of simplicity I kept that in.