Pack Geometries before passing to a web worker

I'm opening this PR early so @mramato can take a look. I'll post performance numbers soon.
I need to dive into this a bit; but I suspect in order to see any real performance increase we'll need to refactor this code that we only create `numberOfCreationWorkers` typed arrays instead of creating a typed array per sub-task.  Currently, it looks like we are subdividing the tasks after creating a single array, rather than figure out how many should go in each task and doing it up front.

This problem is starting to come back to me now that I'm looking at it; in addition to packing I think we need to overhaul the way the creation tasks are sent to the worker as well. The overhead of creating a promise and task per geometry is probably larger than we need it to be.  I don't know how familiar you are with all of the worker stuff, but I can dive into this over the holidays on my own branch and then PR into this one.