Improved UDP compatibility, fix TCP/SSL read buffer handling, improve UDP/TCP/SSL error passing

Supersedes #595. Requires tessel/firmware#104.
Actually, could you add this test to `dgram.js` as a new `test("issue runtime #621")`? This works well for targets without `net` so it's straightforward to blacklist any net related tests. (See one merged into `http.js` recently.)