Add database services for Travis.
Looks like we don't run on Node 0.8 and Node 0.11.

Node 0.11 takes a long time to error out, so we'll just disable that
completely for now.
Let's try setting up coveralls for nodejs.
Fix coveralls grunt task name.
An initial take at moving nginx's DNS resolution into the gatekeeper.

This is to workaround two main issues:

1. nginx only resolves upstream domain names once at startup and then
   caches that indefinitely. This can lead to broken backends if a
   backend's domain IP changes while running.
2. nginx will refuse to start if a domain name cannot be resolved (even
   if it previously resolved when added).

So this basic approach is to integrate DNS lookups into the gatekeeper
configuration reloader. We then only write IP addresses to the nginx
config file, falling back to 0.0.0.0 if it can't be resolved to solve
 #2. We then keep refreshing the domain's IP addresses from DNS based on
the TTL and then write nginx config files and reload nginx as necessary.
Fix changes to rate limit settings not taking affect until restart.

Our caching of the rate limit config objects was a bit too aggressive
and was based on the settings unique id rather than its contents. Now
our caching of these objects is based on the contents, so new rate
limits will get new objects.
Remove debug logs from tests. Add comments to nginx config file.
Improve DNS resolver. Use system DNS servers and persist the results.

We were already caching the results in memory, but persisting the results in
redis helps cut down on the need for nginx to reload when the gatekeeper gets
restarted.
Fix for resolving local hostnames like "localhost."
Use a different IP for null routes. 0.0.0.0 was looping back.
Improve DNS resolution fallbacks to not cache invalid results.
Maintain existingIp when local lookups are performed.
Merge pull request #1 from NREL/dns_resolver

Resolve all domains into IPs for routing
Switch from Winston to Log.js for logging.

This mainly stems from Error objects, as well as other types not always
being logged to winston if passed as an argument:

https://github.com/flatiron/winston/issues/280
https://github.com/flatiron/winston/issues/177

We're not really using some of Winston's more advanced features right
now, so log.js seems to do the trick.
Don't cache null values in redis for dns.
Fix erroneous logging of config file changes when it hasn't changed.
Loosen DNS resolver so it caches and tries to reuse recent IPs.

As long as an IP has been seen in the past 4 hours, it will continue to
use it. This slightly breaks DNS TTL, but this was needed to accommodate
domains that have very short TTLs and cycle through a variety of IPs.
That was causing new IPs and nginx to be reloaded too frequently. 4
hours may be overkill, though, so this could be revisited if that turns
out to be too long.
Spin up a separate redis server for running tests.

Previously, it was using the main redis database that's also used in
development, so things were getting overwritten between development and
test.
Strip error template leading and trailing whitespace.

This is to makes XML output happy (XML can't have any space before the
start of the document).
Bump npm dependencies.

I think I saw one of the res.writeHeader bugs crop up in development
that was fixed on connect 2.11.1.