add support for N dimensional data workgroup sizes to high level API

Pretty much what it sounds. Now the hl API takes a tuple of workgroup sizes and automatically populates the work dimension field, using the KernelIndex trait.