make user whatsit generators accept an optional argument of type node
have ``new_user_whatsit()`` accept prototype as first argument
document alternate behavior of ``new_user_whatsit()``
reintroduce checks for prototype validity
Merge pull request #15 from phi-gamma/master

update with requests by @sh2d