attempt no. 2

This is an attempt to push some of this logic down a level.

Now when you call `label` or `url`, you can optionally pass in the
current context that symbols/procs will be evaluated in.