Split BoostVM and BoostEnvironment in separate files

* Allows finer-grained dependencies.
* Better separation of the roles and no huge .cc file.
* No need for boostenv.cc so there is no more.
* boostenv.hh is kept as the top-level header to include everything.
* In general, the boostenv* files include the boostvm* files
  as a BoostEnvironment manages VMs.