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.
Oh yeah, I meant to say that but forget that I needed multiple backticks.  Still, I think that's better than a named list for each environment. Most of time you'll only be mocking one function in one.env so that use case needs to be concise.