optimizations from profiling build_hyracks

@anbangx @Nan-Zhang @JavierJia @Elmira88 

Some simple changes to our code after looking at the profiles of BUILD_HYRACKS.  the `enum.values()` function was apparently still doing a lot of work (or was being called so many times as to make it seem that way).  I swapped it with a static final array of the same name.

6f40f96 will cause more GC overhead but it's negligible compared to the deepcopy cost.  I'm running timings now and will update this when I have them.

A few other items I noticed:
 - 50% of the time is in writing but 1/2 of *that* time is actually spent in `*.getSerializedLength()`! We may want to cache the length or something!
 - iterating over the treesets takes a looong time. TreeSet iterators are by far our most costly operation.