Fix the assignment of the ‘name’ property for Menu objects

The comments in the code say that the ‘name’ property has one of two
possible values:

1. The value of ‘name’ inside the arguments to the constructor, or in
the absence of that…

2. The location of the menu in memory as a string.

Mistakes in the code make both of these impossible.  The first cannot
happen because the constructor never attempts to change the default
values of the new object with the exception of menu choices; in this
regard the Menu class is different from all others in LNVL which use
the same pattern for their constructors.  The second value is
impossible to apply because the tostring() call fails.  If we convert
a table into a string then Lua returns a representation of the table’s
location in memory.  However, before calling tostring() we have
already given the new table a metatable which implements custom
behavior for string conversion: use the ‘name’ property.  This fails
because if ‘name’ has no value we try to assign it the default value
of ‘name’, that exact same property, which breaks down as a failure of
circular logic.

This patch corrects the problem in two ways.

1. The constructor explicitly checks its arguments to see if they
provide a value for the ‘name’ property.

2. If that fails then the constructor assigns a default string,
avoiding the problem of using tostring() after assigning the
metatable.

This fixes a potential crash that could happen during the original
tostring() call.