Rename Spring.application_watcher to Spring.watcher

Also go rid of the hanging indent. I really hate hanging indents.
Make logic clearer
Application#watcher does not need to be lazy

(As far as I can tell. When the Application instance is created, the
process is already under Bundler, so this seems fine AFAIK.)
Use listen in the test app
Add explicit acceptance tests for listen and polling watchers
In Ruby, everything except nil and false is true

No need to coerce it into a boolean
Use 1.9 style multiline calls

This way it's easier to see they're chained method calls
refactorgs
Show polling fallback message

If the user has listen installed, and they get polling, they *should* be
warned as it's probably a misconfiguration.
Remove always-true condition

We're listening to the root_path, so the returned files will always be
under the root path, right?
Don't watch files outside the root dir

This should be the responsibility of the *user* of the watcher (i.e. the
Application object), not the watcher itself.

If somebody wants to add additional files/directories to the watcher,
which happen to be outside the root dir, then that should be possible -
it's just not the default behaviour of spring.

This also makes the polling watcher much more efficient because it has
to poll many fewer files.

It also reverts the polling watcher implementation to basically what it
was before the listen watcher was added.
speed up the tests
use new hash syntax
Remove #stop from the watcher interface

We don't need to call stop when we're about to call exit, which is the
only external place where stop was being used.
don't need reset, restart is fine
remove unused method
remove unused method
Extract common code to abstract class

The polling watcher doesn't use root path or latency at the moment, but
I have plans for this.
improve debug output
We don't need this require

It's already required by this point, and it's a bit weird to require in
the middle of a class like this.