Formal series by formula

Earlier FPS design using generator didn't work.
Here is other using formula based on #7618
> Yes, this is a feature but I see problems with it now that you pointed it.
Earlier with generators, terms used to come in sorted order after adding. So x**2/2 would come before x**3/6.
Now with formula, ideally gen should be of form f(k)*x**k.
But when adding FPS with gen of form f(k)*x**k and f(k)*x**(k+1), it is not possible to find FPS of form f(k)*x**k

As I said, it is hard to keep gen of the form ``f(k)*x**k``. 
Upon testing, I find that multiplication will not work. For e.g.:-
s1 = FormalSeries(x, function=sin(x))
s2 = FormalSeries(x, function=cos(x))
s3 = FormalSeries(x, function=exp(x))
s = s1 * s2 * s3 won't work.

Cauchy product will only work when it is of the form f(k).x**k. But how do I maintain that form?
Functions like sin(x) have ``f(k)*x**(2*k+1)`` form