Complex Numbers: Rectified the output of expand_complex(I*oo)

-> This bug is reported in the issue 4124.
-> The output of expand_complex(I*oo) earlier was nan (wrong) and is now corrected to oo*I.
-> Modified the way two complex numbers are multiplied in the function as_real_imag() in core/mul.py.
-> This results in the function as_real_imag() returning the correct output.
-> Method of multiplication generally used:

   - Let A (a1 + I*a2) and B(b1 + I*b2) be two complex numbers.

   - Then we generally write A x B as (a1xb1 - a2xb2) + I*(a1xb2 + a2xb1).
   - This method fails for some corner cases.
   - If A is real or purely imaginary ( i.e a1=0 or b1=0 ) and  either real part or imaginary part of B is oo (i.e b1=oo
     or b2=oo) this method fails because it results in terms like 0 x oo which is nan.

-> Example:
   - (0 + I*5) x (8 + I*oo) = (0x8 - 5xoo) + I*(40 + 0xoo).
   - According the above approach the real part is -oo whereas the imaginary part is nan which is wrong.

-> Corner cases like the ones stated above are handled in an effective and different manner which result in correct ouput.

Correct Output:
  In [1]: from sympy import *

  In [2]: expand_complex(I*oo)
  Out[2]: oo*I
Complex: Done the changes mentioned
Complex Numbers: Added test file and removed white spaces
Complex Numbers: Implemented a simpler method to fix issue 4184

Conflicts:
	sympy/core/mul.py
Merge pull request #2814 from pramodch/4124_complex

Complex Numbers: Rectified the output of expand_complex(I*oo)