ScheduledJobPoller: only load each request once, avoids IllegalArgumentException in Maps.uniqueIndex
Merge pull request #356 from stevenschlansker/fix-poller-iae

ScheduledJobPoller: only load each request once, avoids IllegalArgumentException in Maps.uniqueIndex
Update Mesos to 0.21.0 and add option for pure java API code.

Add a configuration flag that allows switching between using the native library from Mesos and the
jesos pure java API. Default is to still use native code.

This also updates the mesos version to 0.21.0.
Factor out the Scheduler lock.

Inject the scheduler lock object everywhere it is needed. Also break
up the "parent injection" pattern which is not needed with DI for the
poller classes that hang off SingularityLeaderOnlyPoller.
Move static resources into /assets subfolder.

Remove the weird "/static/static" folder.
Move the Singularity UI to a special "/ui" resource.

This frees up the root resource to be used for other things.
Make root resource configurable.

Add a new flag in the ui section: redirectRootToUi: true / false

If true, accessing the root URI of Singularity will redirect to the UI. If false, no redirection will
happen (and whatever other resource is configured for / will kick in. By default this is 404 (not found).
fix errors found in review
Add metrics for all JAX-RS resource endpoints.

This exposes metrics to the internal metrics registry.
api-docs rework
add grpn internal maven deploy
Use generic resource allocation instead of hardcoded cpu, memory, ports.
remove spurious class
fix 2
Add generic attribute matching to Singularity.
fix 3
Make code based off configuration loaders somewhat testable.

- Factor out hard coded file names.
- add c'tors that allow spin up without any filenames.
- add a basic test for the SingularityExecutorRunner
Refactor mesos scheduler delegator to actually delegate.

Factor out common code (locking etc), have real delegates to do the work.
another stab at interrupted exceptions
wip