XD-723: Thread.sleep() is evil

This is kind of half-baked but current state is already valuable, and this was off-sprint anyway. You'll want to leave issue 723 open even after merging.

What this does:
* Move FileSink, FileSource etc as top level classes
* Make FileSink smarter using polling until file appears
* Introduce HttpSource with readiness polling as well. Use it in MetricsTests

For some reason, this seems to fix intermittent NamedChannelTests.testCreateNamedChannelAsSource failures (don't ask me why)

`gradle clean test` on spring-xd-shell goes down from 1m40 to 1m07 on my machine with this