API change to X()

This works around the "we can't resize Eigen arrays of anything that
lacks a default constructor" problem - we now require output arrays to
already be properly sized, which is the right thing to do for
efficiency, too.