Use generic resource allocation instead of hardcoded cpu, memory, ports.

This is the initial design of the flexible resource allocation code. It adds a new field to the deploy, called `requestedResources` which can be used instead of `resources`. This field is a list of `SingularityResourceRequest` elements which is pretty much a key -> json element container.

The remainder is pretty much glue code and adjusting the task builder. Right now, the `doesOfferMatchResources` code is still missing. 

The vision here is to deprecate the `resources` field from the deploy and get rid of it completely at some later point in time (the code already only thinks in terms of the `List<SingularityResourceRequest>` elements.

Comments very welcome, this is still heavy WIP.