Fix tab completion for branches with a dot

Completion after the dot would be seen as a new branch name. This is correct
behaviour for two dots (e.g. HEAD~2..master) but not for one dot (e.g.
fix-v1.4)
Refactor spec: replace lets with a factory method.
Wrap specs in a describe block.