Add missing internal documentation
Remove unused "args" config accessor

The value for "args" is never used, so it should be removed.
Remove unused constructor from Provisioner
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.