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.

Now also contains #161.
That's a neat idea, but there's a catch:

```
> list(a::b = 5)
Error: unexpected '=' in "list(a::b ="
> list(`a::b` = 5)
$`a::b`
[1] 5
```

So it'd have to be `` `base::all.equal` = ...`` . But how about:

`with_mock({ ... }, list(compare = ...), base = list(all.equal = ...))`

?