Keep ClassEnv members in a list
Keep ClassEnv members in a list

Process the ir.Class members by fields/procedures/constructors rather
than via the get:members (which is constructed on demand).

The list of (non-constructor) members is sorted by location to keep
getters and setters in same relative order.

The list of members is iterated frequently, so iterating should be
simpler.

Unfortunately it is not possible to pre-compute the MemberEntities
since the lookup happens with both K- and J- element maps, so we still
have to create a closure in forEachMember to iterate the members.

Remaining differences:

- The position of patched members is at the whim of the file order in the sdk.

- Libraries could be similarly processed to move setters back to their relative position.

Change-Id: I1cfe1efc7bf66fd4ddaf0b0e8881e5a291656cac
Reviewed-on: https://dart-review.googlesource.com/17064
Commit-Queue: Stephen Adams <60cb5b73b7e0cb7dcda53302da4fab6ecfc7fa8b@google.com>
Reviewed-by: Johnni Winther <0f64ef784d57ffb064b634040f9eeba0d33d0be4@google.com>

dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk