A more comprehensive debug library

Setting more than one upvalue, getting all upvalues, copying upvalues
and recursion.

Also added Shine.Hook.ReplaceLocalFunction, this will replace a function
upvalue with your replacement version and give your replacement every
upvalue the original had, bar any differences you want.

(This code could have bugs, it's a late night/early morning commit!)