[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!
This is to traverse matrix elements in the most efficient manner. In C, elements are ordered internally one way, in Fortran they are another. Matlab and Fortran have the same element ordering, so this is fine.