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().
OctaveCodePrinter: Matrix elements printed correctly (oct array is 1-based)
OctaveCodePrinter: add draft for docstring
OctaveCodegen: split Octave tests into their own file