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.

Intended users

What does success look like, and how can we measure that?

What is the type of buyer?

Gold/Ultimate

Links / references