Rework deprecations

- Dropped support for RubyGems < 1.8.0 (prevented refactoring)
- Stopped guard for using it's own deprecated methods
- Added a convenient way to add deprecations, separate them from the main code, but also test them reliably.
- `GUARD_STRICT` environment variable which is designed to remove deprecated methods (I haven't used it yet, though - ideally it should also prevent running deprecation tests)

Perceived complexity for _prepare_scope is too high. [8/7]