Implements the navigation logic
## Params
The function requires two keys as parameters
`:session_id` - current session id
`:routes` - ExUssd.Routes routing {list || map}
`:menu` - current menu struct
`:api_parameters` - api_parameters data
Returns %ExUssd.Menu{}.
## Example
iex> defmodule MyHomeHandler do
...> @behaviour ExUssd.Handler
...> def handle_menu(menu, api_parameters) do
...> menu |> Map.put(:title, "Welcome")
...> end
...> end
iex> initial_menu = ExUssd.Menu.render(name: "Home", handler: MyHomeHandler)
iex> menu = ExUssd.Utils.call_menu_callback(initial_menu)
iex> ExUssd.State.Registry.start("session_01")
iex> routes = ExUssd.Routes.get_route(%{text: "*544#", service_code: "*544#"})
iex> ExUssd.Navigation.navigate("session_01",routes, menu, %{text: ""})
%ExUssd.Menu{
callback: nil,
data: nil,
default_error_message: "Invalid Choice
",
display_style: ":",
error: nil,
handle: false,
handler: MyHomeHandler,
menu_list: [],
name: "Home",
next: "98",
parent: nil,
previous: "0",
should_close: false,
show_navigation: true,
split: 7,
success: false,
title: "Welcome",
validation_menu: nil
}