I just wanted to float a little idea here. I just saw a commit to the enyo.Router that deals with ignoring hashChanges via this.location() and it reminded me of some recent activity going on in backbone.
The backbone team is currently exploring changes to their router that make a really clear distinction between the router, and the history implementation. The general idea is that the history object is stateless read/write interface to the browser history and the router is a state machine that reacts to url changes.
Like Backbone's current routing implementation, enyo's router has history management and route handling tangled up as well. Perhaps it's interesting to track what the backbone team comes up with and see if some ideas can be incorporated into enyo's routing implementation.
Enyo's router is currently having very similar problems to the ones the backbone team is trying to address with theirs (including problems with extensibility).