Implement lifecycle state checks

Note: this is a breaking orchestration change. Make sure you add
'running' lifecycle state checks to your YAML environment files to
restore the previous behavior. See README.md for details.

This change gives Maestro the ability to perform arbitrary checks in
addition to checking the status of the created container. The only
implemented check for now is TCP port pinging, but script execution,
simple wait or other types of checks can be implemented in that same
framework.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
stop_timeout container option support
Merge pull request #31 from nikicat/stop-timeout

stop_timeout container option support
Lifecycle checker improvements

* Add factory method for parsing and creating lifecycle helpers/checks
* Execute checks concurrently in a thread pool
* Add unit tests and refactor code

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>