Move separate steps of `rake release` to tasks

This moves guarding for uncommited files, pushing/tagging for source
control and pushing to rubygems into separate Rake tasks so that they
can be easily overridden if desired by users' Rakefiles.

I chose to namespace them under `release:*` to avoid potential
conflicts, although I don't know if that's necessary.
Specs for release subtasks, remove release_gem

Bring the specs into line and drive them through the rake tasks instead
of the old Bundler::GemHelper#release_gem method which is no longer used
directly by the rake tasks in practice.
Merge pull request #3073 from jasonrclark/release_rake_subtasks

Move separate steps of `rake release` to tasks