Misc small iteratee tidy ups

A couple of things that I've wanted to get done for a while now, but haven't got around to before. There's nothing complex in this change; see the commit messages for details.

The structural types fix is based on work by @davidillsley in #967.