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
This might've been proposed before its addition, but AFAICS, all these methods should also be `@nogc`.

You can always just put `@safe @nogc pure nothrow:` at the top instead of repeating them for each method.