Our team uses Mercurial for exactly the same thing, a clean linear history, with features like phases, and histedit it's very easy to achieve and works great.
We use RhodeCode to manage pull requests for Mercurial. This has also a feature to rebase commits on merge.
We use RhodeCode to manage pull requests for Mercurial. This has also a feature to rebase commits on merge.