Fix poly.data.derive to do what I think, based on v1, it was supposed to do.

Reviewer: raymond
Reviewer: lisa

The previous code would produce an error, because it was applying `fnstr` to `fnstr` in the case that `fnstr` was not a function.