Adds with_io method

Allows for easier use of idle command.
Adds ability to send a block to the idle command

The block will be passed the MPD socket object, for use with IO.select
or the like. When the block returns, noidle will be called.