[breaking] fixes #102, starts #115

This PR introduces an API for reading data from the request in a way that also gives nice error messages if that data cannot be read.

The `binding` workflow builder is a wrapper around `Choice.bind` and `bind_req` is the main function to use as a WebPart.

The code is fairly free in what it expects to have returned, but perhaps I could add to `user_data` instead, thereby passing that along to the next web part, rather than requiring a callback. The problem with that is that we lose the typing.