_stderr_receiver(): improve reporting of UnicodeDecodeError
_message(): do not convert unicode strings

Receivers have to take care of conversion instead, if needed.
Move log and logview code to classes, to ease re-use.
show_log(): minor tidy up
Add a logger for status history
Add a window for status history display.

Launch from Help menu for now
Add a function to format a log line in human-readable form
Use log.formatted_log_line() in LogViewCommon
Use formatted_log_line() in _stderr_receiver()
Do not display level prefix for history (always LOG_INFO)
formatted_log_line(): drop useless append parameter
Merge pull request #147 from zas/statushistory

Store and display status messages in a window similar to the Log window
Allow tagger script to access file metadata

Fixes PICARD-259 (and associated sub-tickets)

This moves the taggerscript evaluation to happen when a file is matched
(i.e. when a file is added to a track), where it has access to the both
the file metadata *and* the track metadata.

Because the track metadata no longer has the post-taggerscript data, the
preview of an unmatched track in the metadata box would be incorrect, so
I evalute the taggerscript there (on a copy of the data...) to handle
the special case.