Add ability to clone instructions

We need this so that we can manipulate instructions during optimization without affecting the original unoptimized byte code