2. I think it can't and shouldn't be done in a general way that works for all packages, but rather needs to be implemented in an application specific way for each package, like Tom's example for forums. There's also a running example in bugtracker.
3. Some minor remarks to Tom's example: you can also use [ad_conn path_info] instead of ad_conn urlv. And instead of ns_set put ... there is the handy rp_form_put proc (with which the deletion loop would also be obsolete I think).