Rewriting some memory/flag functions

The knowledge of the special string "(i)" for memory and flags was
showing up in places it really shouldn't have.  So, pushed all that
into the memory and flag functions themselves.  The caller doesn't
have to know that "(i)" is a special name that does special things.
Modify the code that produces key functions

I've changed the memory code so that the caller doesn't have to care
about the special-ness of "(i)".  Changes here to support that.  Also,
put an ignorable declaration in the functions for the stack variables,
for those cases where a value is simply discarded without using it
(such as in the statistical 'mean' operation, which replaces Y but
doesn't depend on the former value of Y).
Add a handler for new condition

There is a new condition the stack code can throw, if an attempt to
use the indirection operation is out of range.  The calculator has
limits on what the I-register may be when acting on operations like
STO or SF.  The emulator will, by default, signal an error in this
case, so we have to handle it and modify the state appropriately.
Defined several more keys

Defined some statistical, flow control, and display mode keys.