* fix: don't emit hash fragment for internal links if hash is empty * add test
* implement hash fragments in the router * clean up query and search example --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>