Add Flags template

Flags is a typecons template for storing OR combinaton of enum values in a type safe fashion.

I think that the possibility to use bitwise operation on enums is a bit of a hole in D type system;
Flags provides a type safe alternative modeled after Qt's Q_FLAGS
I removed ```~=```; I still feel that something like
```
Flags!Enum a = ...;
Enum b = ...;
a &= ~b;
```
is suboptimal, as it forces you to use the unsafe bitwise operators on enums; on the other hand, the confusion with the concatenation operator is probably a cure that is worse than the illness.
There is anyway a safe, if a bit verbose, idiom:
```
Flags!Enum a = ...;
Enum b = ...;
a &= ~Flags!Enum(b);
```
Thanks for your comment.