Changed method finding func

The earlier method of finding func was incomplete. This new method is more robust and less likely to fail. This method is still in progress.
func modification to solve nonlinear sysode of 2 eq order1 type5

Earlier there was error comming in solving the type 5 of nonlinear sysode of 2 equations due to problem in function returned which was `[y(t), y(t)]`. This commit contain modification such as to remove that error. This also places the @XFAILed test back to normal.
Replaced `func` with `funcs` and vice versa

At some places func was used for many functions and funcs was used for single function. This commit replaces that in classify_sysode
Corrected comment
Add function to calculate transmitted vector after refraction [skip ci]
Change the name of function to refraction_angle and fix a typo [skip ci]
Make refraction_angle compatible with Ray3D and plane. [skip ci]
Add test_util
Add deviation [skip ci]
Fix a bug in deviation while using plane. [skip ci]
Add tests for refraction_angle and deviation
Remove unused imports
UnXFAIL a failing test
Merge pull request #7626 from debugger22/snell

Calculate transmitted vector after refraction
Merge pull request #7738 from KDMOE/func_order

Changed method for finding functions fixes #7723 fixes #7736