Added docstring to lambdified functions

If arguments have names, that is used. Otherwise the stack is inspected
to determine if the name can be inferred *with certainty*. If there is
more than one variable pointing to the object, then the name cannot be
determined with certainty, and 'arg_#', where '#' is the number of the
arg is used.
Vector pretty print test fix. Fixes issue #7679.
pretty_symbology: Don't assume the output of U() is not None

U() returns None when unicodedata can't be imported. I'm not sure how to test
this because it's only reproducible if unicodedata from the standard library
can't be imported.  I suppose we could add a hook to test it. It won't be
straight-forward though because the key thing is to make sure it works
correctly at import time.

Fixes #8163.
CodePrinter: allow subclasses to easily override _print_NumberSymbol()

Instead of assigning `_print_Catalan = _print_NumberSymbol`, just
return `_print_NumberSymbol`.  That way, subclasses can redefine
`_print_NumberSymbol`.
Add OctaveCodePrinter

Printer for Octave/Matlab code.  Lots of work still to be done.
Codegen: Add Octave code generator

This is very early WIP.
Matrix: customizable symbols for start/end of rows in table()

No change in default behaviour but this allows more customizable
output by adding `rowstart` and `rowend` kwargs to the existing
`rowsep` and `colsep`.
OctaveCodePrinter: matrix output bit more Octave-style
OctaveCodeGen: sympy version in test
OctaveCodeGen: some things works, lots of tests cleaned up
OctaveCodePrinter: octave can assign matrix to a symbol, disable error.

Of course, need a better solution that accomodates C/Fortran.
OctaveCodeGen: matrix output failing, broken test added
printing: MatPow should have Mul precedence
OctaveCodePrinter: indenter

Tests not updated yet.
OctaveCodePrinter: Use ".^" for Pow and "^" for MatPow

This is overly simplified, might revisit for things like pi**2 later.
OctaveCodePrinter: Improve Mul, identity, tests updated

Lots of tests updates all jumbled up here.
OctaveCodePrinter/OctaveCodeGen: minor cosmetics and comment changes
OctaveCodePrinter: use "^" instead of ".^" if base/exp both constant

E.g., `pi**3` to "pi^3".
OctaveCodePrinter: add booleans
OctaveCodePrinter: add extra parentheses to PieceWise for 2*pw

Unnecessary in some common cases.  Later could try to do this properly
with precedence.parenthesize().