HTTPConnection: different (differentiated) timeout errors for connect and communication

1. Duplicated _on_timeout with _on_connect_timeout.
_on_connect_timeout is triggered by connect timeout, this way we are 
able to differentiate connection timeout from communication timeout. 

Should work with anything the original version worked.

2. Due problems keeping multiple big HTTPRequest POST request body i introduced the ability to fill this body in a callback, from a file for example.