Fix argument reason to always be a const std::string&
Let BoostVM::start take app by reference

* boost::thread (and std::thread as well) constructor does the copy
  of its arguments so it is safe to pass "by reference" even though
  it actually behaves a lot more like "by value" in this case.
* this quite an impressive functionality for safety!