Decorator / attribute functions framework

This is generic part of a feature we have been discussing few days ago. Probably a bit overly generic but that D metaprogramming is like drugs - very hard to stop once addiction is up and running :(

Unittest examples should provide a clear picture how this is going to be used for enhancing the REST module (this is work-in-progress currently).

Slightly off-topic; do you think something like that may fit into Phobos after some field testing or it feels too weird for stdlib?

```D
/// example
unittest
{
    struct Context
    {   
        int increment;
        string token;
        bool updated = false;
    }   

    static int genID(Context* context)
    {   
        static int id = 0;
        return (id += context.increment);
    }   

    static string update(string result, Context* context)
    {   
        context.updated = true;
        return result ~ context.token;
    }   

    class API 
    {   
        @before!genID("id") @after!update()
        string handler(int id, string name, string text)
        {
            import std.string : format;

            return format("[%s] %s : %s", id, name, text);
        }
    }   

    auto api = new API();
    auto context = new Context(5, " | token");
    auto funcattr = createAttributedFunction!(API.handler)(context);
    auto result = funcattr(&api.handler, "Developer", "Hello, World!");

    assert (result == "[5] Developer : Hello, World! | token");
    assert (context.updated);
}
```