node: nextTick object receive asyncId

process.nextTick now also returns the created object so the asyncId can
be checked. Likewise an undefined 'data' field is set for users to be
able to attach data without needing to change the object map. Finally,
the created nextTick object is made the context of the called function.
This way users can retrieve their stored data without needing function
closures.
async_listener: expose async id uint64 as 2 uint32

Using the following bit of math hackery, it's possible to extract the
int64 value without needing to convert it to a double:

asyncUidPtr[0] * 0x100000000 + asyncUidPtr[1]

Though the index used is dependent upon the endianess of the machine,
but regardless it's a much faster way to access/increment the uid than
via a function call.

Unfortunately there's the API that allows users to set a JS callback.
This complicates things and I haven't figured out a good solution around
the issue.