Refactor divergence stack out into Warp class

because it will also be used by the JIT shader executor
Only recalculate active execution contexts when necessary
(Start to) Extract instruction implementations into separate class