A couple weeks ago GitHub added merge squash as an option for accepting pull requests (via the UI, you could always do it manually). As long as you don't delete the feature branch you'll still have the history of iterations in that branch.
This, unfortunately, is not a great thing to propose.
Many of git's operations on refs are basically O(n). You really don't want to accumulate an unbounded number of them over time.