[enh] Issue 5140 - Implement __FUNCTION__ and __PRETTY_FUNCTION__

http://d.puremagic.com/issues/show_bug.cgi?id=5140

`__FUNCTION__` is a common feature found in other languages and compilers. C99 defines it as `__function__`, although various compilers use their own naming (uppercase or lowercase, sometimes `__func__`).

List of compilers that I know of implementing the feature:

- [GCC](http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html)
- [MSVC][MSVCLink]
- [Oracle](http://docs.oracle.com/cd/E18659_01/html/821-1384/gipgw.html)
- [DMC](http://www.digitalmars.com/compiler.htm#new844)

[MSVCLink]: http://msdn.microsoft.com/en-us/library/b0084kay%28v=vs.80%29.aspx

`__FUNCTION__` will show the fully qualified name of the current function (when used as a statement in a function), or the calling function (when used in a parameter). If the function was called outside of a function scope (e.g. global enums initialized with CTFE), it returns an empty string.

`__PRETTY_FUNCTION__` is similar, except it also shows the function modifiers and parameters.