improved link handling, allowed more characters

see http://wagn.org/Additional_invalid_character_for_NAME for context.

Two main changes:
  1. ALL links, including unknown names, now use the link name (aka url_key).  If the url_key and the link name are different, links to unknown cards specify the full (canonical) name in a CGI variable
  2. This new approach means we can now allow "~" and "|" in card names.