broke io::read/write out into non-buffering and buffering solutions

more tweaks to make the tests pass, also made the return type uint instead of () so the customer doesn't have to go looking through the buffer for answers

addressing issues 45, 46, and 47.  Added re-registration via an IoEventContext into the event_loop. Supports both edge triggered and level triggered setups.  Changed net::read and write to not use a loop.. added read_all and write_all to use them and perform the old behavior

more updates, mostly to tests

got all tests passing