Refactoring: extract filtering logic from metadata.

Previously, the metadata classes had two distinct
responsibilities:

* Manage special computed rspec metadata properties
  such as file_path, described_class, etc.
* Implement filtering logic that determines if a
  particular filter hash applies to the metadata hash.

It greatly simplifies things to extract the metadata
filtering logic into its own module. This greatly
reduces the surface are of the metadata objects
and is a stepping stone towards no longer subclassing Hash.