Return nil when no match found.

- Set up ruby version and gemset.
- Updated Gemfile to use https for RubyGems.
- Included all development dependencies.
- Refactored tests.
- Return nil instead of original object when no match found.
We don't need to commit the Gemfile.lock in a gem.
Adding optional core extension.