I'd prefer this was explicit -- like `builderSoFar.PostForm(new {...}).Build()`
or `...BuildForm(new {...})`
rather than having an exception if you forget a header.

It's also a little confusing-at-first-sight with string and stream data.