Added snapshot code

WIP
if you want provider_key, you need to pass it here
```argnames, argvalues, idlist = testgen.infra_providers(metafunc, 'provider_key')```