KernelInvocation is now a class, taking on old Device class code.

Device class removed. KernelInvocation created when run, and destroyed
immediately after complete.

size_t[3] replaced with Size3 struct, with utility memory functions.