Factor out common code, add parameters

Factor common code with Body_builder and Make_api functors.

Parameterize building the sync or async versions over chunking and
how the final data conversion is actually done (raw bytes or UTF
encoded - I'm as yet 100% sure on the correct interpretation).

Provide modules with best known defaults.