Adding cluster progress to the clusters get call, as well as

the cluster provider and template as objects instead of strings.
This is to preserve the structure of these objects when a get
call is made for a specific cluster to keep the apis restful.
Also using java objects instead of manipulating json objects
for those.

Including progress requires adding another column to the
clusters table in order to allow joining on the job number. Since
this makes the getClusterStatuses rpc call useless, removed it.
I guess it's fine. I prefer not ordering simply because it incurs a performance overhead and isn't necessary. That being said, it shouldn't prevent this from being merged.