* Implemented a new controller.Notebooks.lookup_note_id() method to get only a note's id given its title.
* Added some new link resolution code to Editor and Wiki, to fill in a link's id according to its destination note.
* Factored out some of the link finding code into a common Editor.find_link_at_cursor() method.
* Factored out query parsing into a common parse_query() function, which operates on a link node.
* Added new Link_pulldown class-thingy to represent the little pulldown you see when the cursor's on a link.
* Refactored Pulldown's positioning code to support offset positioning (needed for elements within an iframe).
* model.Note has a deleted_from member to indicate the notebook id it was deleted from (if any)
* controller.Notebooks sets the deleted_from member and makes all deleted notes startup notes in the trash
* new controller.Notebooks.undelete_note() method
* split up the idea of UI messages into errors and informational messages, with separate CSS
* updated Editor and Wiki UI code to deal with new deleted_from variable
* added "undelete" button when viewing a deleted note, and "delete" changes to "delete forever"
* added a "trash" link to the notebook links
* reorganized responsibilities for displaying notebook/user links among Wiki.populate() and Wiki.display_user()
* when deleting messages in a notebook with a trash, displaying "The note has been moved to the trash"...
with a working undo button!
* tweaked focusing logic in display_search_results(), which has been renamed to display_loaded_notes()
* changed controller.Users and controller.Root constructor arguments to support this.
* Updated INSTALL document accordingly.
* Client now will prepend this new http_url variable to the logout link.
* Revisions can be opened either in the current page or in a new window/tab.
* Added ability for a read-write notebook to contain read-only notes. This supports showing read-only revisions.
* Fixed updatedb.py to properly load the anonymous user.
* Updated initdb.py and updatedb.py to deadl with new-style /notebooks/notebookid?note_id=noteid wiki links.
* Made Persistent copy the revisions_list on each revision update so different revisions don't share lists.
* Prevented Note from updating its revision twice upon construction. Now it's only updated once.
* Work-around for nasty urlparse() caching bug related to unicode strings that cherrypy barfs on.
* Added optional revision flag to various controller.Notebooks methods to allow opening of a notebook with a particular note revision displayed.
* Refactored some of validator decorator to use clearer variable names internally.
* Validator decorator now supports treating arguments with default values as optional.
* controller.Notebooks.default() takes an optional note_id argument.
* controller.Notebooks.contents() takes an optional note_id argument.
* Wiki.js now makes use of these new controller APIs.
* Editor.js now takes a notebook_id argument to its constructor so it can properly make links.
* Made controller.Notebooks.save_note() return the newly minted revision timestamp upon a successful save.
* Whenever we get back a revision timestamp from save_note(), we store in in the client's list of revisions for that note.
* Now raising Access_error in controller.Notebooks in various places where the notebook requested is unknown.
* Tweaked pulldown CSS a bit. Now will sport a handy-dandy scrollbar if the pulldown gets too tall, at least in real browsers.
* Fixed bug where clicking "show on startup" checkbox directly didn't visually toggle the checkbox.
* Search results are now appended to the open notes, instead of replacing them.
* Already-open notes that also happen to be in the search results are closed so that they're not shown twice.