Merge pull request #161 from eregon/show_unify_fail_operands

Show operands when an unification fails, so it is much easier to interpret
Start a list of VMs
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.
Remove unused methods BoostBasedVM::setApplication{URL,Args}

* Application URL and args are put in the registry directly by emulator.cc.
Restrict single-VM assumption to main()

* Add a VM argument to BoostBasedVM::run() and onPreemptionTimerExpire()
* Have only two places where we choose the vm:
  * in main() To start the initial VM
  * in BoostBasedVM() to register ModOS