Fix to make the controller responsible for setting the directory path of gauges

 The problem was that the grid is created with default gauge_path = ./_output/_gauges. After that
the grid function add_gauges is called by the user to add a list of gauges. This function will also create gauge file objects for each gauge using the default path. The user can then create the controller object and set another outdir directory that won't be reflected in the gauges path.

I tried to solve this issue by:
1- removing the gauge_path property to avoid confusion.
2- splitting the method add_gauges to two methods: add_gauges and
setup_gauges. The former will set the gauges indecies and create a list
of file names (only names). The latter will take outdir as input and create
the gauge_files (actual file objects)
3- Added exception message to the solver method write_gauges to
warn the user that s/he needs to call setup_gauges if the method was
not called
4- The controller run method will call setup_gauges passing its own self.outdir

There are also two related issues:
I made outdir_p and F_path controller variables to be python properties so that they reflect the update in the controller outdir