This only supports pushState for the browsers with native pushState support.
For other browsers (mainly IE8 and IE9), it will refresh the page upon pushState()
and replaceState().
@class History
@constructor
@param {Object} [options]  The options object
@param {Window} [options.win=window]  The window object
function History(options) {
	this.win = (options && options.win) || window;
	this._hasPushState = !!(this.win && this.win.history && this.win.history.pushState);
}