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

I'm not actually sure why there's a name and a result_var. I didn't mess with this code before. In my mind there should only be one (i.e. bad things would happen if these weren't the same), but perhaps there's a reason? Most people will never use these classes directly, so just documenting it for now may be ok? If I find some time tonight I'll do a full code readthrough and try to figure out what's going on here.