isEmptyObject should use hasOwnProperty: prevents from always returning true if the Object.prototype is extended

#176

Signed-off-by: Alexander Johansson <alexander@n1s.se>
fixed issue #158
Merge remote-tracking branch 'remotes/KATT/master'
Cherry picked https://github.com/hrunting/history.js/commit/f13f2bf7751acf70c8c2065bbd8c367706a2fd16

added option to force no suid

- merge commit 0cdd5f52fb2c36764e3665d8a41dccc6da744595
- apply logic to scripts/compressed/history.js as well

Conflicts:

	scripts/compressed/history.js
Cherry picked: https://github.com/hrunting/history.js/commit/31eb079cd991189f5b0e164e63170adb519a2646

provide a consistent URI-encoded document.location.href

Different browsers handle document.location.href and document.URL
in inconsistent ways.  Provide a new History.getLocationHref()
function to provide a consistently URI-encoded href

Conflicts:

	scripts/uncompressed/history.html4.js
	scripts/uncompressed/history.js
- Change History.getHash to return consistent hash, ala History.getLocationHref
- Fix an issue where HTML4 replaceState wasn't firing when SUIDs were disabled and the url didn't change
- Make extractId ignore the fragment if one is present (normally the hash is passed without an fragment)
- Remove all encoding / decoding of URLs except when creating or extracting a fragment, based on the assumption that all inputs to replaceState / pushState are appropriately encoded
- Change escapeHash/unescapeHash methods to use encodeURI/decodeURI instead of window.escape/unescape
- Build compressed and bundled scripts
- Add potential fix for IE8 not returning full hashed url from getLocationHref when hash contains encoded characters
- Built
Added error testing and quota relief for sessionStorage.setItem

Mostly this is a band-aid to keep the engine chugging along in case the
dreaded 'QUOTA_EXCEEDED_ERR' pops up. Probably not the optimum solution
but it does work (removeItem is apparently REALLY slow, so doing it
every time would be bad)
Merge pull request #1 from jamie-pate/master

Fixed the showstopper that happens in chrome after using history.js for a while. looks like you're the new head as you have the most fixes.
Disable session storage if it's present but not working, thanks to paulschreiber
Add Lakin Wecker's dojo adapter
Add dojo tests
Add hack for dojo 1.8
Built
Change dojo adapter to not use dojo events, it seems to break other parts of dojo