Fix bug with PackWithReplacements when top-level object with complex objects.

PackWithReplacements failed with "Resources found during pickling",
because the original value becomes a Reference after replacemenet.
Merge pull request #227 from kennytm/top-level-pack-with-repl

Fix bug with PackWithReplacements when replacing top-level object with complex values.
Update ASIO wrapper constructors to only take BoostEnvironment and VMIdentifier

* Restore the behavior of creating a new TCPConnection
  in every call of startAsyncAccept().
Document a few exceptions for the calling thread
Constify a couple members of BoostEnvironment and BoostVM
Improve member order of BoostVM

* The environment is the "main context" of the VM.
* Also follows better the constructor arguments order.