Reconcile tasks using mesos framework API

- fixes an issue where the REST API is still catching up on task
reports and Singularity startup considers them lost
- instead of using the REST API on startup
- allows reconciliation to happen periodically in case of failures
also refactor pollers
fix bug
add logging to reconcile
formatting
handle invalid task states
Merge branch 'master' into better_task_reconciliation

Conflicts:
	SingularityBase/src/main/java/com/hubspot/singularity/ExtendedTaskState.java
	SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityStartup.java
	SingularityService/src/main/java/com/hubspot/singularity/smtp/SingularityMailer.java
fix merge commit
bump version to 0.20.1
WIP - migration + 0.20.x reconciliation

- introduces ZK migrations
- properly implements 0.20.x reconciliation
more work on migrations
tweaks
adjust bad config value
whitespace
fix bad import
fix findbugs violations
remove synchronization from AtomicBoolean usage
actual migration test
Merge pull request #254 from benhardy/better_task_reconciliation_with_build_fixes

Build and synchronization fixes for Better task reconciliation with build fixes
Merge pull request #243 from HubSpot/better_task_reconciliation

Better task reconciliation