MPD.Internal: replace all uses of throw in IO with throwIO

As per the recommendation in the docs for Control.Exception.throwIO
MPD.Internal: use exception selectors rather than pattern match
MPD.Internal: add an UnexpectedEOF exception

EOF during recv throws UnexpectedEOF