I should be able to preserve closures across a _QLButton

(User Story, Investigate , Priority: Medium, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: Specifically, bindings from outside should work inside the button.
For example, I should be able to say something like:
""thingy"" -> +$myval
_QLButton(label=""Hi there"", ql=_search($myval))
That is, the _QLButton should know about the bindings from outside of it.
This is harder than it looks -- it requires collecting the bindings that are visible at the call site of _QLButton, and bundling them in serialized form into the generated HTML on the page, so that the Client can pick them up and pass them back. Or it requires a major rethink of _QLButton, so that the contextual information is all maintained server-side somehow, in the session. (Which is problematic.) And we don't have an immediate use-case calling out for this, so it's not terribly high priority. But it's theoretically the way things should work, so we should keep it on the radar.
Obviously, this should also apply to _QLLink, _QLInput, and so on.
This feature probably suggests that we have to allow shadowing, so that recursive closures can work without binding name conflicts.
There is very likely a general abstraction fighting to break out here, about the interaction of QL expressions across the client/server boundary. Think about this in light of the upcoming need for post-processing inputs before they get saved, which is a related problem.