On Stream#read callback, free the pointers before entering the ruby world

Any ruby exception can prevent us from freeing the pointers
Also don't enter the ruby world if there is nothing to do there
Check the type of Stream#write argument
Add shared examples
Create a Rbuv::Loop context for specs
Always return self
Wrap all Rbuv::Loop methods in ruby to receive a block and create a one shot timer
Add Rbuv::Loop spec
Add most Rbuv::Tcp flag methods and peername and sockname
Fix errors on mark functions
Rbuv::Loop is not a Rbuv::Handle. It does not respond to Handle#close Handle#ref etc.
Make Rbuv.run_block pass the block to Loop#run_once
Add initial Rbuv::Poll implementation