Begin implementing abstract platform

Yeah, I think this is an issue with the API in `core::comm`. Bug @alexcrichton about it ;)