Fix code which modifies a hash while each()ing over it

It has never been correct to modify a hash during traversal by each().

In older perls this was unlikely to break the tests. In newer perls
it is relatively likely, and in 5.18 it will be almost certain.

This includes a version bump. Needs to be merged upstream.
Ensure that Module::Pluggable returns plugins in a predictable order

As of 5.18 hash traversal order will vary per-hash, and indeed more
frequently. The likelihood this results in one of the tests in M::P
failing becomes very high.

In general the test expectations were fragile, but probably almost
never failed. With hash traversal randomization they will fail
regularly.

Note the use a temporary array in part of this patch is because
sort in scalar context is undefined.
semi-Randomize hash insertion order