Get widgets from function annotations and default arguments.

Also, preserve the order of function parameters from the signature where possible.

This uses a backport of the Python 3.3 signature machinery that @minrk found and improved.

I'm happy to work on this some more, but I thought I'd send you what I've got so far, because I have to go and do other things for a while.