bring merge op enums up a level and share
check in
merge ops become stateless, drier merge/gather

I would rather ops have state so that the kind of hacks that go on
in the merge join op wouldn't be necessary, but there is no great
way to recreate them for each merged row without reparsing the args,
using clone, or adding a bunch of builder scaffolding to every class.
On the other hand, it seems as though some of the functions I intended
to preserve using that state are just broken anyway (eg custom joining
strings), and a few other legacy=ish things like disk backed interfaces
made it awkward to not have a central merged row count anyway. As a
result, the only non-static and mutable state in the op objects are the
bundle fields, but oh well.

The key differences between merge and gather parsing were numeric values
representing 'countdown' and 'key topper size', and a lot of broken junk
in op merge (apparently intended to support the broken custom join string
feature -- it isn't entirely broken, just undocumented, limited, and flimsy).
Op merge had some other issues as well -- random result table use, double key
creation, bundle iteration instead of format, bugs when using numerals, etc.
Those have been fixed.

It would be nice to also encapsulate the key topper style logic from gather,
but that can wait for a more thorough clean up (eg. using java 8 functions
for merge ops). This should suffice for consistency, readability, and the
ability to add a few more merge ops -- like creating new cardinality estim-
ators
apply formatting
add some javadoc to merged value
Merge pull request #67 from addthis/merge-op-improvements

Merge op improvements

all tests passed