Improve string partitioning logic.
Merge pull request #133 from nicksay/string-bisect

Improve string partitioning logic.
Allow navigation to the same URL.

Update event handling to no longer ignore clicks and `spf.navigate` calls to
the same URL.

If navigating to the same URL and it contains a hash (e.g. from `/page` to
`/page#target`), short-circuit, attempt to scroll instead of sending a request,
and add a history entry for the destination.  This matches browser behavior.

If a navigation to the same URL occurs, either a by request or scroll, update
the existing history entry instead of adding a new one.  This also matches
browser behavior.

Closes #126.