Refactor Navigation creation to use functional options
Problem to solve
There are a number of functions that build navigations and hash them depending on what actions they are created from, or how / when the are created. It would be better to use a functional option method of instantiating these objects along with requiring information on how the navigation should be created/hashed.
Proposal
Remove the various NewNavigationFromXXX functions and replace them with functional opts.
Create a NewNavigation(identity T, opts ...) that is used to build the navigations with specific property details.