Once evaluated redefine the property on the context

This improves debugging of tests as each call no longer has to step
through the getter each time the property is accessed. It also
simplifies the code as a bonus.
Add a test suite for the function
Add a README with usage instructions
Add a package.json so the project can be installed via npm
Add a ctx.restore() to reset the context

The original method has now been renamed to ctx.clean().
Bump version to 0.3.0