Issue title: Add weight to AllocationDecider
 Issue body: AllocationDeciders (plural) currently take all the AllocationDecider instances in a set. While the order does not matter for a "yes" decision (because it must be unanimous), a "no" or "throttle" decision could be optimized if cheaper deciders were allowed to run first.

Adding a weight, with a default of 1.0 (easy since AllocationDecider is an abstract class), would allow expensive deciders to increase their weight and run later.
 Comments: 
 Comment 0: @rjernst we do optimize the order of the AllocationDeciders to have the cheapest ones run first and short-circuit on "NO" answers, are you saying we should have the allocation deciders decide the weight themselves?
 Comment 1: @dakrone I think that is not true - it's a set so it order is undefined?

 Comment 2: Yeah, the injected AllocationDeciders ctor takes a set of AllocationDecider instances, so no order that I see. @dakrone Yes, I think the deciders should give their own weight. They are should be self aware of their expensiveness.
 Comment 3: Ahh okay, I thought I remembered a commit changing that. Frustrating that we can't inject an ordered list by default with Guice. +1 to weight then.

 Comment 4: Now that allocation deciders are de-guiced, I think we can do this with regular ordering instead of adding a weight, and it should be less complex to implement

{'source': 'GithubIssues', 'repo_name_with_owner': 'elastic/elasticsearch', 'issue_id': 100416301, 'repo_stars': 55977.0}