minitest-metadata performance improvements

This PR improves performance of minitest-metadata metadata processing by up to 50%.  See this gist: https://gist.github.com/tmertens/9a3355c3c9a04d537a34

The two caveats here are:

- It requires any hash metadata to appear at the end of the argument list, but this conforms to standard ruby practices.

- If a hash metadata appears at the end of the metadata argument list, other metadata args will be added to that hash rather than instantiating a new hash.  This change is based on the expectation that metadata is generally applied to each method individually and not to two or more methods using a single stored variable.  This gives an additional 25-30% performance boost to metadata args which include a hash.

I have never seen variables used for metadata hashes in the wild myself, but if this is an issue, the second commit can be easily reverted.
Oh good catch, you're right that should be `metadata.empty?`