Enable Groups & HorizontalList tests outside of IE

For #134

Due to Chrome and Firefox flexbox bugs, the surface isn't sized to
content. We now work around those bugs by setting the surface's length.
This allows surface backgrounds and margins to work properly.

--

When the ListView is invisible or not in the DOM during construction,
envInfo fails to be calculated and we never retry. To fix this, envInfo is
now calculated during measuring. Also, envInfo should only be used after
measuring has succeeded.

--

During measuring, groupheadercontainers and itemscontainers could have the
wrong width when they are children of a flexbox. To fix this, the surface
is given align-items:flex-start during measuring.

--

A couple of HorizontalListTests relied on a race condition (ListView will
have rendered its items after a requestAnimationFrame). This was fixed by
waiting for loadingState=viewPortLoaded following a scroll. Afterwards,
the tests were too slow because they scrolled too many times. The tests
were sped up by picking a few key scroll positions to test against.