Fix Issue 5361 - Add TemplateOf and TemplateArgsOf

Examples:

```d
struct Foo(A, B) {}
alias Bar = Foo!(int, real);
static assert(__traits(isSame, TemplateOf!Bar, Foo));
static assert(is(TemplateArgsOf!Bar == TypeTuple!(int, real)));
```

https://d.puremagic.com/issues/show_bug.cgi?id=5361
Merge pull request #1884 from Poita/bug5361

Fix Issue 5361 - Add TemplateOf and TemplateArgsOf