spy/core: collect() uses itertools.chain
spy/decorators: improve documentation
spy/decorators: add --once