with_mock() function

As discussed in #159. Interface as suggested by @hadley, supports nesting, mocking more than one function, not mocking at all, and returning a value.

Early draft, with tests and a documentation stub. Comments are welcome.

Fixes #159.
On my system:

```
> NULL == ""
logical(0)
> all(NULL == "")
[1] TRUE
```

True, this is not very explicit -- but this code path is tested in the tests. Do you prefer an explicit check for `NULL`?