make syspath/bytestring_path roundtrip on Windows

This is an alternative to #58 that makes bytestring_path perform more like the
inverse of syspath on Windows. This way, we can convert to syspath, operate on
the path, and then bring back to internal representation without data loss. This
involves looking for the magic prefix on the Unicode string and removing it
before encoding to the internal (UTF-8) representation.
fuzzy: use the new print_obj function
simplify the random print code

We don't need the 'if opts.album' since we print with the same function and
argsuments.
warnings about using syspath with some utils

Also pertaining to #58: for most utility functions, paths should *not* be
`syspath`-ified. (This only occurs right before a path is sent to the OS.) In
fact, as @Wessie discovered, using the result of `syspath` with `ancestry` leads
to incorrect behavior. I checked and this should not currently happen anywhere,
but these docstring changes make that requirement explicit.
merge
fix several non-unicode logging statements

A user reported a problem with one of the logging statements where .format()
tried to convert a Unicode string to bytes because the log message was '', not
u''. As a rule, we should ensure that all logging statements use Unicode
literals.
convert: embed into destination file, not source file

Paging @yagebu: I think the old version of the code would embed album art into
the wrong file. Please correct me (and accept my apologies) if I'm wrong
though.
convert: write tags from library to copied files
fetchart: sort image filenames (GC-452)
send "failed reading file" message to debug

This message was being logged as an error every time MediaFile failed to parse a
file. But this is not actually an error -- the importer uses FileTypeErrors to
determine whether a file is music or not. This resulted in error logs for every
album art file, .m3u, etc. in the imported directory. Verbose output is a better
home for this message.
Add 'maxwidth' option to embedart and fetchart plugins.

artresizer.py instances an ArtResizer object that uses internally the PIL; ImageMagick
or a web proxy service to perform the resizing operations.
Because embedart works on input images located on filesystem it requires PIL or ImageMagick, whereas
fetchart is able to do the job with the fallback webproxy resizer.
fetchart: fix urlopen call
fix few errors revealed by test_art.py
changelog and light style fixes for #64
misc. minor fixes for artresizer (#64)

- Safer proxy resize. The URL parameters are now properly encoded. And a
  spurious additional request has been removed.
- Removed manual search of $PATH. Invoking "convert" without a path does this
  automatically.
- More pyflakes-friendly test import of PIL.
- Do not delete the NamedTemporaryFile -- doing so creates a race condition
  where the file might be created between the filename generation and the tool
  invocation.
artresizer (#64): helper functions, not classes

The previous method was to change self.__class__ dynamically to make __init__
instantiate different classes. This new way, which uses bare functions instead
of separate functor-like classes, instead just forwards the resize() call to
a module-global implementation based on self.method.

Additionally, the semantics of ArtResizer have changed. Clients now *always*
call resize() and proxy_url(), regardless of method. The method makes *one* of
these a no-op. This way, clients need not manually inspect which method is
being used.
fetchart fixes for image resizing (#64)

Fixed a number of issues with the changes to fetchart:
- Remove redundant fetches. This was making the Amazon source download every
  image twice even when art resizing was not enabled!
- Restore local_only switch in plugin hook, which got lost in the shuffle at
  some point.
- Don't replace the original image file in-place; use a temporary file instead.
  This would clobber the original source image on the filesystem with the
  downscaled version!
fix art tests for new URL interface (#64)

The various source helper functions now return URLs instead of calling
_fetch_image themselves.
fetchart: fix command & use maxwidth (#64)

An earlier commit broke the call to art_for_album here (too few arguments).
I've also now propagated the maxwidth setting for the command to match the
import hook.
lazily initialize ArtResizer singleton (#64)

Searching for `convert` or PIL has non-negligible performance overhead, so it's
preferable to only do it when really necessary. This way, the search is only
performed when ArtResizer.shared is accessed for the first time.