Restrict single-VM assumption to main() and boostenv.cc

* BaseSocketConnection and TCPAcceptor have a new VM field
  and use a VM as the constructor argument instead of a BoostBasedVM.
  The _environment field is kept as it is much easier considering
  the many lambdas in these class methods.