[WIP] Octave/Matlab codegen and code printing

I'm working on Octave/Matlab code printing and codegen support.

TODO:

 - [X] Octave code printer (not complete)
 - [X] Octave codegen (not complete)
 - [x] Lists
 - [x] Matrices
 - [x] Logical
 - [x] Tests, based on C/Fortran tests.
 - [x] Piecewise support
 - [ ] Comment headers to appear after the function prototype line.
 - [ ] Use vectorized elementwise operations, e.g., `.*`, `.^`, (unless we know a Matrix is involved?)
 - [ ] Indenting
 - [ ] C/Fortran deals gracefully with "not supported"...
 - [ ] Is superclass `CodeGen` a bit too C/Fortran specific?  mathematica.py
       was a bit thinner, but is for code printing, not codegen.
 - [ ] Single-statement/single line support?  This is important for generating "handle functions", e.g., [https://github.com/cbm755/octsympy/blob/master/inst/%40sym/matlabFunction.m] as opposed to .m files.

Comments/help very welcome!
How can I parenthesize here?  If I have 2*Piecewise then it gives:
````
2*(x>1).*(FIRST) + (~(x>1).*(SECOND)
````
which is wrong.  I need:
````
2*(    (x>1).*(FIRST) + (~(x>1).*(SECOND)    )
````
I *could* just put the extra parentheses all the time, but... yuck.  Does my _print_Mult need the `PREC, parenthesize()` stuff?

OTOH, I already have sometimes unnecessary parentheses around FIRST and SECOND so maybe who cares?