generator: add a constructor suitable for humans, with optional arguments

Most of the API arguments are actually optional; this will make it
obvious to the documentation reader.

Signed-off-by: David Scott <dave.scott@citrix.com>