review post: Implement heavy worklow changes

Firstly, the review post command is from now on doing a bit more than it used
to. Its job from now on is not only to post review requests, but also to ensure
that the Story-Id tags are in all commits that are being posted.

In case the Story-Id tag is not in one or more commit messages, review post
fetches the stories in progress from the issue tracker and starts rewriting the
commit messages. Every time it encounters a commit without Story-Id, it asks the
user to select a story. The commit being processed is then assigned to that
chosen story.

The fact that the stories are fetched from the issue tracker might look strange,
because review post used to use the story branch to get the story ID. But since
it was decided that the mapping can be 1 branch : N stories, we do not depend on
storing the story ID in the branch name, but rather we enforce Story-Id in every
commit.

Secondly, the command also works in two modes now. When the -parent option is
not specified, only the last commit on the current branch (HEAD) is being
posted. In case -parent is set to BRANCH. All commits represented by git
revision range BRANCH.. are posted for code review.

There are a more few new tags to control review post, particularly
  * -no_fetch: do not fetch the repository, do not perform any sync checks
  * -no_rebase: do not rebase the selected branch onto the parent branch

Change-Id: 62adf93f4c
Story-Id: SF-15