Changes to Appliance class + others

* clone_domain script now reports back if it fails at each step to let
  the new Appliance class builder know if it failed.
* version did not know how to asked if "master" was in "5.2" which
  caused big problems in the appliance version checking code. This has
  now been rectified.
* Appliance has many new changes:
  * Appliance.configure() used to perform custom configuration, this has
    been replaced with an Automatic configurator. However, if any args
    are passed to the .configure() method, it hands off to a
    custom_configure() method, which replicates the old behaviour.
  * does_vm_exist() method is added to aid in deletion.
  * precompile_assets, loosen_pgsql, clone_domain, deploy_merkyl,
    update_rhel methods have been added which interact with the scripts.
  * fix_ntp_clock has been replaced with a version that runs the
    external script. This was due to a significant slowness encountered
    with the internal operations of the fix_ntp_clock method. If the
    "newer" ntp fix is required, this should be tested and ported to the
    external script.
This won't work:
```
$ cat broken.py
def func(**kwargs):
    pass

func({'kwargs': 'dict'})
```

```
$ python broken.py
Traceback (most recent call last):
  File "broken.py", line 4, in <module>
    func({'kwargs': 'dict'})
```