comm: use url.QueryEscape to escape query params

...instead of the questionable string.Replace that was done.
user: fix value of OneWeek to be "7day"

The previous value of "1week" was wrong and would cause last.fm to
return data from Overall.
user_test: Fix crash that could happen if NowPlaying is nil
Refactor: Use io.Readers instead of slurping to []bytes for decoding

xml.Decoders can read from io.Readers, so we just give the response Body
to xml.NewDecoder() instead of using ioutil.ReadAll to slurp all the
[]bytes.

Change fixture mock to pretend it's an HTTP client. Upon success,
returns a dummy HTTP response which Body is the open fixture file.