An attempt to make implementation of #pragma pack consistent with other "stack" pragmas. Also modifies #pragma options align, since it shares the stack with #pragma pack.
It is the first item from todo list in http://reviews.llvm.org/D19361
The patch doesn't change compiler's behavior, so the tests are not modified.
I'm planning to rework the pragmas' diagnostics in next patch -- it should be a common feature of all "stack" pragmas.
Defining a template member function outside of its header is asking for trouble. This is a pre-existing issue that probably shouldn't be dealt with as part of this change, but eventually this needs to move back to the header.