spy/core: add Context class, use it for collect()
spy/cli: auto-inject context args from CLI
spy/core: turn on context injection for collect()
spy/decorators: forward context to fragment body
add a bunch of tests
spy/core: check index_offset is Integral

it would only cause cryptic errors later if not
spy/cli: fix a lot of errors in decorator parsing
update docs

- remove with_defaults from documentation
  there aren't enough defaults for it to be useful
- update python example to the new way of making chains
- mention the context object in 'spy from Python'
- generally update API docs to reflect recent changes