* Support code hot reloading for JavaScript projects
* Add some missing JavaScript symbols and APIs
* fix the Travis build
* (review changes) remove the js type from the standard library as it doesn't follow NEP-1
* more additions to the DOM module
* Follow NEP-1 in jsffi; spell 'hot code reloading' correctly
* introduce a jscore module
* Document jscore module.
* readded js type
* Remove the '$' operator that doesn't behave
* Implement dial, support IPv6 in httpclient
Added ``dial`` procedure to networking modules: ``net``, ``asyncdispatch``,
``asyncnet``. It merges socket creation, address resolution, and connection
into single step. When using ``dial``, you don't have to worry about
IPv4 vs IPv6 problem.
Fixed addrInfo loop in connect to behave properly.
Previously it would stop on first non-immediate failure, instead of
continuing and trying the remaining addresses.
Fixed newAsyncNativeSocket to raise proper error if socket creation
fails.
Fixes: #3811
* Check domain during connect() only on non-Windows
This is how it was in the previous implementation of connect().
* Call 'osLastError' before 'close' in net.dial
* Record osLastError before freeAddrInfo in net.dial
* Add missing docs for 'dial' proc
* Optimize dial to create one FD per domain, add tests
And make async IPv6 servers work on Windows.
* Add IPv6 test to uri module
* Fix getAddrString error handling
Turned out that the old code was wrong. I'm not sure why it used to work.
`response.body` properly resolves to an async proc defined in the httpclient
module with the following signature:
proc body*(response: AsyncResponse): Future[string] {.async.}
Perhaps the old code was somehow matching the body field of the `AsyncResponse`
object, which is marked as private.