Let's start with the uncomfortable truth: GWT compiler performance is really lousy. You can use some hacks here and there, but you're not going to get significantly better performance.
A nice performance hack you can do is to compile for only specific browsers, by inserting the following line in your
<define-property name="user.agent" values="ie6,gecko,gecko1_8"></define-property>
or in gwt 2.x syntax, and for one browser only:
<set-property name="user.agent" value="gecko1_8"/>
This, for example, will compile your application for IE and FF only. If you know you are using only a specific browser for testing, you can use this little hack.
Another option: if you are using several locales, and again using only one for testing, you can comment them all out so that GWT will use the default locale, this shaves off some additional overhead from compile time.
Bottom line: you're not going to get order-of-magnitude increase in compiler performance, but taking several relaxations, you can shave off a few minutes here and there.
To get your app to respond to the click of the Hyperlink you can add a ClickHandler to the Hyperlink. The ClickHandler should do the work of updating your app interface, etc. The history token will get updated automatically based on the history token set in the constructor of the Hyperlink and the History.newItem() method does not need to be called.
To handle arbitrary URL's with your possible tokens being pasted into url field of the browser or bookmarked by your users you need to implement a ValueChangeHandler. Check the documentation of HyperLink for an example.
As of GWT 1.5, there is an Anchor widget that should do what you want.