Changed how the CommandFactory class creates the singleton.
Made a CommonOptionsParser object part of the constrcutor for every command.

Some of the commands may not actually use it or need it, but it was the fastest
and cleanest way to get this done. This can be improved, but for now let's do
it this way.
Implemented LS command: Lists all the functions defined in a translation unit.

This command still lists the functions included by a source file.
Fixed bug: The LS command now lists the functions defined in a source file,
ignoring the functions that were included.
Fixed bug for detecting when an argument for a command is wrong.
Fixed bug: Remove any trailing whitespace
Moved the creation of CommonOptionsParser object insid ethe batchMode method.

We need this so we can later on modify the compilation database with the load
and unload commands.
Made changes so we can modify the original command line
Fixed bug: Since we are parsing the arguments with the CommonOptionsParser
constructor there is a static variable list which holds all the source files and
we repeat it over and over again, the same files are duplicated. Thus we are
removing the duplicated.

However, note the way the duplicated are removed, we are checking just for
the file name and not the absolute path. This is because the file which contains
only the file name it gets expanded to its absolute path after executing once,
the rest of the times gets added again without the absolute path.
Refactored code: Created a template function to run a specific action with a
specific set of arguments.
Command for unloading files is completed. This changed involved implementing
a method in Interpreter to modify the parameters passed to the
CommonOptionsParser.
When there are no loaded files do not execute the JCUTAction.
Moved functions into Interpreter class. Also create a copy of the original
command line arguments so we can modify it inside the Interpreter.
Fixed bug after unloading a file, we had to remove it from the
CommonOptionParser source list as it was still appearing.
Added new method to detect when there are loaded files in the Interpreter.
Implemented the LOAD command.
Fixed bug: We should return true whenever we attempt to execute a command, even
if it was not a valid Command.

Moved the position of the mainLoop() method.
Add the double dash when the used forgot to do it.
When we receive EOF make sure we type it, otherwise nothing will be printed.

When the interpreter receives an empty line, just skip it.
Print the name of the source file when a function is not found.