This commit changes the starting point of a task from the point when the
ApplicationContext issues the ContextRefreshedEvent to
SmartLifecycle#start. This is a more accurate point of start for a task
in that all beans should now be available. It also allows us to clean
up many ApplicationContext hacks that were present to get around the
fact that many beans were not ready when a Task was attempting to begin.
Resolvesspring-cloud/spring-cloud-task#107
This introduces a listener that stores the association between a Spring
Batch job and the task it was executed within.
Resolvesspring-cloud/spring-cloud-task#46
Merge Changes based on code review.