Add gulp to the recipe interface.

* add gulp to recipe interfaces as an instance variable
* update task declaration to pass around gulp instance
* update the utils to pass around data objects.

So gulp is an instance variable and we need to make sure we get the
right instance.  The gulp CLI will find the locally installed gulp which
we also need if we want to integrate recipes directly inside a gulp
file.

It might be that I should re-work the idea of recipes.  Instead of
declaratively creating tasks, maybe it should only _configure_ tasks
which are created outside.