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__`
- [x] rework docstrings
- [x] rework Result, added NamedResult.
- [ ] clear-up FIXMEs on name versus result_var in docstrings.

see this comment https://github.com/sympy/sympy/pull/7824#discussion_r17892414

Ok, I'll try to think about it a bit, but note they are used differently: `y` used in function prototype versus `y[i]` as `assign_to` for the `CodePrinter`.  But could always get `y` from `y[i]` as `.parent` or something...