add socket:settimeout functionality, and adjust API appropriately
rearrange our code so get better error results, and fix return type consistencies issues
add our default error handler to the socket prototype, so user code has access to it if they want to proxy
differentiate :read from :lines in error handler
don't break old code calling :starttls outside of an event loop
update documentation