Merge back semantic result in originalType
Use postfix style for function attributes

Issue XXXXX - Prefer postfix style for function attributes

Currently, dmd prints function attributes in front of the function
declaration, in some situations:
- Header generation (-H)
- Ddoc generation (-D)
- stringof property, pragma(msg), etc

But, actually, there are some issues with the prefix style. For example:

1. foo1 is impossible, but foo2 is possible:
 void foo1(pure int delegate() dg) {}
 void foo2(int delegate() pure dg) {}

2. foo1 and foo2 are different signature:
 void foo1(const int delegate() dg1) {}
 void foo2(int delegate() const dg2) {}
For the type of dg2, prefix style is not possible.

3. Some member function attributes would be looked like ambiguous:
 const int foo() {}     // const(int) foo(), or int foo() const?
 immutable int foo() {} // ditto
 int foo() const {}     // no ambiguity

4. Printing function pointer or delegate types will be done by postfix style:
 alias pure void function() FP;
 alias pure void delegate() DG;
 pragma(msg, FP);	// void function() pure
 pragma(msg, DG);	// void delegate() pure

Therefore, compiler should prefer the postfix style as its output.

 /// document
 pure void foo() { ... }
 pragma(msg, typeof(foo));	// void() pure
 pragma(msg, typeof(&foo));	// void function() pure

Ddoc output:
 void foo() pure
     document

Header generation:
 void foo() pure;
[Refactoring] trustToBuffer
fix Issue 12266 - Regression (2.065): Header generation produces uncompilable header
unlisted bug fix 1
[Refactoring] Remove HdrGenState::autoMember
Tweak header-gen result