optimize writes in genomix data using nulls

@anbangx @JavierJia @Nan-Zhang 

This commit is based on and takes #56 further into Node-- only those values that are non-null and collections of length > 0 are saved into the output stream.

Outside of `Node`, the only visible difference is that there are no default values for averageCoverage (it's null by default and trying to use it without setting it first will give a NPE).

Inside of `Node`, anywhere a `get()` is called, we initialize the requested value if it's not already existing.  There's also a fair bit of extra code involved in checking for `null` (curse you, Java) especially in comparison with raw types.

The first commit is kind of unrelated-- it removes `EnumSet.allOf()` where it can be replaced with much less overhead with `enum.values()`.