Allow localhost as hostname

***What:***
Changes `isHostname` and `isHostnameOrIp` so that localhost is an accepted parameter.

***Why:***
The DNS, MySQL, MSSQL checks should be able to be configured to allow for localhost being used in their details, but not for the target.  This means we can query localhost with DNS and can set the SQL host to localhost (current you can already set it to 127.0.0.1).

These functions are not being used when validating the target host.


This payload would be allowed after this change:
```
{ "details": {
        "port": 53,
        "query": "localhost",
        "record_type": "A"
    },
    "disabled": false,
    "label": "DNS Check",
    "monitoring_zones_poll": [
        "mzA"
    ],
    "period": 60,
    "target_alias": "public0_v4",
    "timeout": 10,
    "type": "remote.dns"
}
```

Currently we would get this response:
```
{
    "type": "badRequest",
    "code": 400,
    "message": "Validation error for key 'details.query'",
    "details": "Invalid hostname",
    "txnId": ".rh-8F4f.h-ele.r-SX2eFkMG.c-2.ts-1414437467040.v-0a76d42"
}
```

After the change using a `target_hostname` of `localhost` will still return this as expected:
```
{
    "type": "badRequest",
    "code": 400,
    "message": "Validation error for key 'target_hostname'",
    "details": "Not a valid hostname, IPv4 or IPv6 address",
    "txnId": ".rh-GvSD.h-ele.r-K5lb2lJl.c-7.ts-1414436627637.v-0a76d42"
}
```

The change to `isHostname` only affects the DNS check.  The change to `isHostnameOrIp` affects the following fields on agent checks:

| check | field |
| ----- | ------ |
| dbaas_mysql | host |
| mssql_buffer_manager | computer |
| mssql_database | hostname |
| mssql_memory_manager | computer |
| mssql_plan_cache | computer |
| mssql_sql_statistics | computer |
| mssql_version | hostname |
| mysql | host |
| redis | host |