Grail + PIL = true!

Grail 0.3 and PIL 0.1 now runs happily together.  Well, almost, since
the filetype plugins is used only when explicitly entering an URL, not
for inline images and followed links :-(

Hopefully, that will be fixed in time for the official release of PIL
0.1 (which will be released sometimes next week).

In the filetypes directory, a lot of files like:

--------------------------------------------------------------------

# File: image_XXX.py

import pil_interface

class parse_image_XXX(pil_interface.pil_interface):
    pass

--------------------------------------------------------------------

where XXX is one of bmp, gif, jpeg, pbm, pcx, pgm, ppm, tga, tiff,
sgi, xbm (and possibly more).
“Grail” directory from PIL 0.2b3
Patch to Grail/pil_interface.py

This removes the bogus highlight border around the label used to hold the
image, makes some adjustments to the contents of the label before the image
is ready, and removes the timing printouts: I don't think anyone doubts that
PIL is a lot faster!
Move files into Grail directory structure; paste readme into pil_interface.py
Avoid uncollectable garbage cycle between Viewer and ViewerMenu

Viewer defines __del__() but had “popup_menu._ViewerMenu__viewer” attribute
referencing itself.
Merge branch 'pil'
Fixes to “pil_interface” module
Check for cancelled load dialog before converting filename for cache
Synchronise bookmarks file type with file name
Parse seconds as a floating-point literal, but save as an integer
Use default bookmarks format from preferences
More typos and documentation errors
Use “subprocess” module to avoid CLI encoding issue

* Added in Python 2.4
Rewrite remaining content and transfer decoders for byte strings

* Quoted-printable decoder now uses int(..., 16) to decode hexadecimal
* Use splitlines() rather than custom code in base-64 decoder
* Translate all text content types from bytes to characters using the Latin-1
  codec in addition to the newline decoder. Other types are left with raw
  bytes.
Convert newlines to CRLF sequence in quoted-printable decoder

Also drop any leftover data on close rather than feeding two copies of it
Merge branch 'master' into HEAD

Conflicts:
	grail/Viewer.py
	grail/ancillary/BookmarksGUI.py
	grail/bookmarks/iso8601.py
	grail/grailbase/GrailPrefs.py
Port new PIL stuff to Python 3