refactor for Codegen Routine

For OctaveCodeGen (pr #7824), I need some refactoring of `Routine`.

- [x] add Fortran matrix tests
- [x] add C matrix tests
- [x] move language specific stuff out of `Routine.__new__`

see this comment https://github.com/sympy/sympy/pull/7824#discussion_r17892414

Totally not necessary, but the way these docstrings were done originally is "wrong". I didn't bother to change them on the last pass, but if we're doing this refactor we might as well. SymPy (tries) to follow the [numpydoc standard](https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt#docstring-standard) for docstrings. Basically, it's just formatting. No `` around the parameters, proper indentation, etc... If you feel like it, it'd be nice to clean these up if we're moving them around anyway.