Feature/add provider automator type

- Add user editable fields to create cluster page
- Required fields checking on the client side for user editable fields and admin fields
- Sending providerFields with response as per spec:

{
    "name": "test",
    "description": "",
    "clusterTemplate": "reactor-distributed",
    "numMachines": 5,
    "provider": "rackspace",
    "providerFields": {
        "userfield1": "val",
        "overridable1": "val"
    },
    "services": [
        "hadoop-hdfs-namenode",
        "hadoop-hdfs-datanode",
        "hadoop-yarn-resourcemanager",
        "hadoop-yarn-nodemanager",
        "zookeeper-server",
        "hbase-master",
        "hbase-regionserver",
        "reactor",
        "continuuity-chef-bootstrap",
        "base"
    ],
    "hardwaretype": "large",
    "imagetype": "ubuntu12",
    "initialLeaseDuration": 604800000,
    "config": {
        "hadoop": {
            "core_site": {
                "fs.defaultFS": "hdfs://%host.service.hadoop-hdfs-namenode%",
                "io.file.buffer.size": "131072"
            },
            "hdfs_site": {
                "dfs.datanode.max.xcievers": "4096",
                "dfs.datanode.max.transfer.threads": "4096",
                "dfs.replication": "1",
                "dfs.blocksize": "134217728",
                "dfs.namenode.handler.count": "30",
                "dfs.datanode.handler.count": "8",
                "dfs.datanode.du.reserved": "1073741824"
            },
            "mapred_site": {
                "mapreduce.framework.name": "yarn",
                "mapreduce.map.java.opts": "-Xmx512m",
                "mapreduce.reduce.java.opts": "-Xmx512m",
                "mapreduce.job.maps": "3",
                "mapreduce.job.reduces": "3",
                "mapreduce.task.io.sort.factor": "25",
                "imapreduce.task.io.sort.mb": "250",
                "mapreduce.jobtracker.taskscheduler": "org.apache.hadoop.mapred.FairScheduler"
            },
            "yarn_site": {
                "yarn.resourcemanager.hostname": "%host.service.hadoop-yarn-resourcemanager%",
                "yarn.resourcemanager.address": "%host.service.hadoop-yarn-resourcemanager%:8032",
                "yarn.resourcemanager.scheduler.address": "%host.service.hadoop-yarn-resourcemanager%:8030",
                "yarn.resourcemanager.resource-tracker.address": "%host.service.hadoop-yarn-resourcemanager%:8031",
                "yarn.resourcemanager.admin.address": "%host.service.hadoop-yarn-resourcemanager%:8033",
                "yarn.nodemanager.resource.memory-mb": "4096"
            }
        },
        "hbase": {
            "hbase_site": {
                "hbase.rootdir": "hdfs://%host.service.hadoop-hdfs-namenode%/hbase",
                "hbase.cluster.distributed": "true",
                "hbase.zookeeper.quorum": "%join(map(host.service.zookeeper-server,'$:2181'),',')%",
                "hbase.regionserver.handler.count": "100",
                "zookeeper.session.timeout": "60000"
            }
        },
        "hive": {
            "hive_site": {
                "javax.jdo.option.ConnectionURL": "jdbc:mysql://%host.service.mysql-server%:3306/hive?createDatabaseIfNotExist=true",
                "javax.jdo.option.ConnectionDriverName": "com.mysql.jdbc.Driver",
                "javax.jdo.option.ConnectionUserName": "dbuser",
                "javax.jdo.option.ConnectionPassword": "dbuserpassword",
                "hive.metastore.uris": "thrift://%host.service.hive-metastore%:9083"
            }
        },
        "mysql": {
            "server_debian_password": "somedefaultpassword",
            "server_root_password": "somedefaultpassword",
            "server_repl_password": "somedefaultpassword",
            "bind_address": "%ip.service.mysql-server%"
        },
        "reactor": {
            "repo": {
                "user": "aptuser",
                "password": "aptuser"
            },
            "continuuity_site": {
                "log.saver.run.memory.megs": "512",
                "gateway.memory.mb": "512"
            }
        },
        "zookeeper": {
            "zoocfg": {
                "maxClientCnxns": "100",
                "tickTime": "2000",
                "initLimit": "10",
                "syncLimit": "2"
            }
        }
    }
}