Uber-AM lifecycle/ordering (\"normal\" case):

- [somebody] sends TA_ASSIGNED
- handled by ContainerAssignedTransition (TaskAttemptImpl.java)
- creates \"remoteTask\" for us == real Task
- sends CONTAINER_REMOTE_LAUNCH
- TA: UNASSIGNED -> ASSIGNED
- CONTAINER_REMOTE_LAUNCH handled by LocalContainerLauncher (us)
- sucks \"remoteTask\" out of TaskAttemptImpl via getRemoteTask()
- sends TA_CONTAINER_LAUNCHED
[[ elsewhere...
- TA_CONTAINER_LAUNCHED handled by LaunchedContainerTransition
- registers \"remoteTask\" with TaskAttemptListener (== umbilical)
- NUKES \"remoteTask\"
- sends T_ATTEMPT_LAUNCHED (Task: SCHEDULED -> RUNNING)
- TA: ASSIGNED -> RUNNING
]]
- runs Task (runSubMap() or runSubReduce())
- TA can safely send TA_UPDATE since in RUNNING state
[modulo possible TA-state-machine race noted below:  CHECK (TODO)]