make nose.util.isgenerator() work on Python 3

- True if either a generator expr or a generator function
- isgenerator() to use existing UnboundMethod workaround