Fix all lint errors in app

I also disabled some of the default lint rules so that we don't have
a ton of noise from lint, and also enabled pylint on TravisCI.

The command to run pylint locally is
 `pylint --rcfile=test/pylintrc app`
Merge pull request #13 from box/enable_pylint

Fix all lint errors in app
Move non-service subcommands onto main thread

This change moves execution of the non-service subcommands (i.e.,
`build`, `stop`, `deploy`) onto the main thread. There is no good
reason not to execute these on the main thread, and putting them on
the main thread makes them easier to control via signals.

For example, killing a "clusterrunner build" process will now only
require hitting ctrl-C once instead of twice.
Merge pull request #14 from box/main_thread_subcommands

Move non-service subcommands onto main thread
Close all file descriptors on server stop

This is a fix for an issue in ClusterRunner where even if the Tornado
IOLoop has been stopped, web requests will not be rejected. In fact,
those requests would just hang open indefinitely until the Python
process actually ended.

This had led to some strange effects where if a slave process was
hanging due to a different issue, the master would have connections
open to it. Later when we would manually kill the hanging slave
process, the master connections would finally fail and bring down the
master as well.

The fix is to explicitly close the Tornado IOLoop with an argument to
close all file descriptors. I couldn't find good documentation on why
this fixes the issue, but I verified the fix through manual testing.