Refactor of Provisioner, bugfixes and new features

This is a large refactor of the Provisioner class, but it also has
effects in almost all classes. The main changes include:

New features:

  * Add configuration options to set Babushka command-line arguments
  * Allow manually overriding the install bootstrap URL

Bugs fixed:

  * Improve integration of Babushka's output with Vagrant's logging
    (fixes the bug where Babushka's progress meter creates a lot of
    garbled output)
  * Escape all variables used in shell commands
  * Ensure Babushka installation directory on the VM exists before
    installation
  * Find the user's home directory more reliably
  * Download bootstrap script on guest (instead of host) in case the
    host doesn't have cURL installed
  * Improved logging readability

Other benefits from the refactor:

  * Split large methods into smaller, more understandable methods
  * Considered public/private visibility of methods (for testing)
  * Ensure all shell commands are generated consistently
  * Reduce amount of code required to execute a command on the VM or
    log a message to Vagrant's output
Update README with latest information
Standardise on using heredocs for long strings

Also fix up the "undentation" of some existing heredocs.